F - Function
先找到数组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;
}
F - Function的更多相关文章
- js Function()构造函数
var scope="global"; function constructFunction(){ var scope="local"; ...
- Function构造函数
使用Function构造函数, 也能够创建函数, 和使用关键字function定义函数有几点区别: 使用function关键字这样定义函数: var f = function(x,y) {return ...
- JavaScript自运行函数(function(){})()的理解
今天打开JQuery源文件(jquery-1.8.3), 看到JQuery的初始化过程是这样的 (function( window, undefined ) { // .... })( window ...
- JS原型的问题Object和Function到底是什么关系
var F = function(){}; Objcert.prototype.a = function(){}; Function.prototype.b = function(){}; F 既能访 ...
- JS特殊函数(Function()构造函数、函数直接量)区别介绍
函数定义 函数是由这样的方式进行声明的:关键字 function.函数名.一组参数,以及置于括号中的待执行代码. 函数的构造语法有这三种: 1.function functionName(arg0, ...
- function foo(){}、(function(){})、(function(){}())等函数区别分析
前面一段时间,看到(function(){}),(function(){}())这些函数就犯晕,不知道它到底是什么意思,为什么函数外要加小括号,函数后要加小括号,加和不加到底有什么区别……一直犯迷糊, ...
- Function, Predicate
Function, Predicate的使用 Function用于把一种类型的对象转化为另一种类型的对象.Predicate用于判断某个对象是否符合一定条件. 一.Function和Functions ...
- commonJS — 函数操作(for Function)
for Function github: https://github.com/laixiangran/commonJS/blob/master/src/forFunction.js 代码 /** * ...
- 译文:javascript function中的this
个人理解+google翻译.如有错误,请留言指正.原文来自MDN: this 简介 Javascript中一个函数的this关键字的行为相对其它语言有些不同.在严格模式和非严格模式间也有区别. 在大多 ...
随机推荐
- setenv LD_LIBRARY_PATH
For most Linux binaries, NCL was built using gcc and gfortran. This may cause a dependency on a file ...
- soapUI系列之—-01 介绍soapUI简介,groovy 简介
1.soapui简介 SoapUI是一个自由和开放源码的跨平台功能测试解决方案.通过一个易于使用的图形界面和企业级功能,SoapUI让您轻松,快速创建和执行自动化功能.回归.合规和负载测试.在一个测试 ...
- 读取本地json文件,转出为指定格式json 使用Base64进行string的加密和解密
读取本地json文件,转出为指定格式json 引用添加Json.Net 引用命名空间 using Newtonsoft.Json //读取自定目录下的json文件StreamReader sr = ...
- Android自带的分享功能案例
MainActivity的代码 package com.hpsvse.weiboshare; import java.io.File; import android.net.Uri; import a ...
- serverSpeed是一个android手机端到服务器间udp/tcp对比测速软件
https://github.com/eltld/serverSpeed https://github.com/c-wind/serverSpeed https://github.com/PeterK ...
- 3.2.1 配置构建Angular应用——简单的笔记存储应用——展示功能
本节我们会通过构建一个简单的笔记存储应用(可以载入并修改一组简单的笔记)来学习如何应用Angular的特性.这个应用用到的特性有: 在JSON文件中存储笔记 展示.创建.修改和删除笔记 在笔记中使用M ...
- Matplotlib绘图基础
import matplotlib.pyplot as plt import numpy as np #绘图流程 x=np.linspace(-1,1,100) y=x**2 plt.plot(x,y ...
- 亿部书城李柯毅:Testin云測可大幅提升产品质量 值得推荐!
亿部书城李柯毅:Testin云測可大幅提升产品质量 值得推荐! 2014/10/13 · Testin · 开发人员訪谈 成立于2010年的亿部书城.其主营业务为移动增值业务及数字出版业务,由中央部委 ...
- JDBC访问数据库查询信息的步骤(硬编码格式)
1 Class.forName()加载驱动 2 DriverManager获取Connect连接 3 创建Statement执行SQL语句 4 返回ResultSet查询结果 5释放资源 packag ...
- pandas 学习 —— 逻辑表达式与布尔索引
>> df = pd.DataFrame(np.random.randint(0, 10, (5, 4)), columns=list('ABCD')) A B C D 0 0 4 8 4 ...