【HDU】6038
来源:互联网 发布:sniffer linux 编辑:程序博客网 时间:2024/06/16 17:10
题目链接:点击打开题目
题意不是很好解释,但是看懂了能看出来是一个置换群。
我们先求b的各循环阶数数的个数,然后求a中每个群中,循环阶数的因子的元素的数量,就是可以作为fi的值的数的个数。
比赛10发WA,就因初始化。
代码如下:
#include<queue>#include<cmath>#include<stack>#include<cstdio>#include<vector>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;#define INF 0x3f3f3f3f#define CLR(a,b) memset(a,b,sizeof(a))#define PI acos(-1.0)const LL MOD = 1000000007;int a[100000+100],b[100000+100];bool vis[100000+100];bool visB[100000+100];LL num[100000+100]; //循环阶数 int main(){// freopen("input.txt","r",stdin);// freopen("output2.txt","w",stdout); int n,m; int Case = 1; while (~scanf ("%d %d",&n,&m)) { for (int i = 0 ; i < n ; i++) { scanf ("%d",&a[i]); vis[i] = false; } for (int i = 0 ; i < m ; i++) { scanf ("%d",&b[i]);// num[i+1] = 0; //这么初始化就WA visB[i] = false; } CLR(num,0); //这么初始化才能AC,如果a的群很大,而b的群很小的时候,会搜到循环阶数大于m的群 for (int i = 0 ; i < m ; i++) { if (!visB[i]) { visB[i] = true; int ant = 1; int t = b[i]; while (t != i) { visB[t] = true; t = b[t]; ant++; } num[ant] = (num[ant] + ant) % MOD; } } LL ans = 1; for (int i = 0 ; i < n ; i++) { if (!vis[i]) { vis[i] = true; int ant = 1; int t = a[i]; while (t != i) { ant++; vis[t] = true; t = a[t]; } LL cnt = 0; //循环阶数是b的循环阶数的倍数的个数 for (int j = 1 ; j*j <= ant ; j++) { if (ant % j == 0) { if (j*j != ant) cnt += (num[ant/j] + num[j]) % MOD; else cnt = (cnt + num[j]) % MOD; } } ans = ans*cnt % MOD; } } printf ("Case #%d: %lld\n",Case++,ans); } return 0;}
阅读全文
0 0
- 【HDU】6038
- hdu 6038
- HDU 6038 Function
- HDU-6038 Function
- hdu 6038 Function(思维)
- HDU 6038 Function
- hdu 6038 Function
- HDU 6038 Function
- hdu 6038 Function
- HDU 6038 Function
- Function (HDU 6038)
- HDU 6038 Function【思维】
- hdu--6038--Function
- HDU 6038-Function
- hdu 6038 Function
- HDU 6038 函数问题
- hdu 6038 Function
- Function HDU-6038
- python3基础-io
- 公务员面试之综合分析真题解析
- 数字组合-LintCode
- Can you solve this equation?--CSU-ACM2017暑假集训2-二分搜索
- 阿里云数据库专家玄惭的“武功”全记录之性能优化篇
- 【HDU】6038
- Spark2.x---3. RPC源码解析
- 第八届ACM校赛->魔戒
- 搜索关键字拼音智能提示实现
- 1959简单枚举类型——植物与颜色
- js实现首尾相连的文字滚动效果
- 淘淘商城(第一天)
- Android 核心技术
- C# 面向对象(Mp3实例完善 无图)