Bryce1010模板

先找到数组A中的循环节,再找到数组B中的循环节,如果B中的循环节是A中循环节的循环因子,说明可以配对,结果累积起来。

#include<bits/stdc++.h>
using namespace std; const int MAXN=1e6+10;
const int MOD=1e9+7;
#define LL long long LL a[MAXN],b[MAXN];
LL num1[MAXN],num2[MAXN];
int main()
{
LL n,m;
LL ca=1;
while(scanf("%lld%lld",&n,&m)==2)
{
memset(num1,0,sizeof(num1));
memset(num2,0,sizeof(num2)); for(int i=0;i<n;i++)scanf("%lld",&a[i]);
for(int i=0;i<m;i++)scanf("%lld",&b[i]); //首先求a的循环节
//i===f(a[i])
//num[i]表示都i个循环节的长度
LL tot=0;
for(int i=0;i<n;i++)
{
if(a[i]==-1)continue; tot++;
LL ii=i;
while(a[ii]!=-1)
{
num1[tot]++;
LL t=ii;
ii=a[ii];
a[t]=-1;
} } //求b的循环节,num2[i]表示长度为i的循环节的数量 for(int i=0;i<m;i++)
{
if(b[i]==-1)continue;
LL len=0;
LL ii=i;
while(b[ii]!=-1)
{
len++;
LL t=ii;
ii=b[ii];
b[t]=-1;
}
num2[len]++;
} //开始匹配,如果长度相同则匹配成功,累积
LL sum=1;
for(int i=1;i<=tot;i++)
{
LL cnt =0;
//cout<<num1[i]<<endl;
for(int j=1;j<=num1[i];j++)
{
if(num1[i]%j==0)
{
cnt=(cnt+num2[j]*j)%MOD;
//cout<<cnt<<num1[i]<<endl;
}
}
sum=(sum*cnt)%MOD;
}
printf("Case #%lld: %lld\n",ca++,sum%MOD); } return 0;
}

最新文章

  1. Windows系统上的.Net版本和.NETFramework的C#版本
  2. 关于当传过来的值转换成string类型报错的问题
  3. debug [LTS]
  4. Maven教程
  5. MacOS长按无效问题
  6. 测试CAS
  7. linux下系统对于sigsegv错误时的处理
  8. Android的init过程(二):初始化语言(init.rc)解析【转】
  9. JS----构造函数与原型prototype 区别
  10. Android中sharedPreference的简单使用
  11. Dev系列控件的AJAX (转)
  12. hdu4370 0 or 1【最短路+建图】
  13. 使用Dockerfile制作自己的Docker镜像
  14. ASP.NET Core 依赖注入(DI)简介
  15. C# GDI+双缓冲技术
  16. 多线程Java Socket编程
  17. Spark SQL讲解
  18. Flask 视图,模板,蓝图.
  19. lapis 集成openresty最新版本cjson 问题的解决
  20. 基于spring和mybatis的简单项目流程

热门文章

  1. json解析bug之ERROR ExceptionController:185 - not close json text, token : :
  2. CentOS 7下安装Logstash ELK Stack 日志管理系统(下)
  3. SharePoint 2013 调查问卷的使用方法
  4. js将月份转换为英文简写的形式
  5. windows下Python扩展问题error: Unable to find vcvarsall.bat
  6. Chapter1-data access reloaded:Entity Framework(上)
  7. 2016/05/13 thinkphp 3.2.2 ① 数据删除及执行原生sql语句 ②表单验证
  8. ubuntu字符界面下显示中文和调整分辨率
  9. (转载)synchronized代码块
  10. POJ1458 Common Subsequence —— DP 最长公共子序列(LCS)