HDU 6038 - Function | 2017 Multi-University Training Contest 1
/*
HDU 6038 - Function [ 置换,构图 ]
题意:
给出两组排列 a[], b[]
问 满足 f(i) = b[f(a[i])] 的 f 的数目
分析:
假设 a[] = {2, 0, 1}
则 f(0) = b[f(2)]
f(1) = b[f(0)]
f(2) = b[f(1)]
即 f(0) = b[b[b[f(0)]]]
f(1) = b[b[b[f(1)]]]
f(2) = b[b[b[f(2)]]]
由于将 a[i]->i 连边可以得到不相交的多个循环
可以看出对于 a[] 中的每一个循环,满足条件 f 的个数即 b[] 中循环长度为其循环长度约数的循环
故对于a中每个循环,找出b中循环长度为其长度的约数的循环个数,再把每个循环的个数乘起来
*/
#include <bits/stdc++.h>
using namespace std;
#define LL long long
const LL MOD = 1e9+7;
const int N = 1e5+5;
int n, m;
int a[N], b[N];
int fa[N], fb[N];
int sa[N], sb[N];
int num[N];
int sf(int x, int f[]) {
return x == f[x] ? x : f[x] = sf(f[x], f);
}
int main()
{
int tt = 0;
while (~scanf("%d%d", &n, &m))
{
for (int i = 0; i <= max(n, m); i++)
{
fa[i] = fb[i] = i;
sa[i] = sb[i] = num[i] = 0;
}
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
fa[sf(i,fa)] = sf(a[i], fa);
}
for (int i = 0; i < m; i++) {
scanf("%d", &b[i]);
fb[sf(i,fb)] = sf(b[i], fb);
}
for (int i = 0; i < n; i++) sa[sf(i, fa)]++;
for (int i = 0; i < m; i++) sb[sf(i, fb)]++;
for (int i = 0; i < m; i++) num[sb[i]]++;
LL ans = 1;
for (int i = 0; i < n; i++)
{
if (sa[i])
{
LL cnt = 0;
for (int j = 1; (LL)j*j <= sa[i]; j++)
{
if (sa[i] %j == 0)
{
int k = sa[i] / j;
cnt = (cnt + (LL)j*num[j]) % MOD;
if (k != j) cnt = (cnt + (LL)k*num[k]) % MOD;
} }
ans = ans * cnt % MOD;
}
}
printf("Case #%d: %lld\n", ++tt, ans);
}
}
HDU 6038 - Function | 2017 Multi-University Training Contest 1的更多相关文章
- HDU 6038 Function —— 2017 Multi-University Training 1
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total ...
- 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- hdu 6038 Function
Function Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- hdu 4930 Fighting the Landlords--2014 Multi-University Training Contest 6
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4930 Fighting the Landlords Time Limit: 2000/1000 MS ...
- HDU 6168 - Numbers | 2017 ZJUT Multi-University Training 9
/* HDU 6168 - Numbers [ 思维 ] | 2017 ZJUT Multi-University Training 9 题意: .... 分析: 全放入multiset 从小到大,慢 ...
- HDU 5726 GCD (2016 Multi-University Training Contest 1)
Time Limit: 5000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u Description Give y ...
- HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- HDU 6038 Function(思维+寻找循环节)
http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意:给出两个序列,一个是0~n-1的排列a,另一个是0~m-1的排列b,现在求满足的f的个数. 思路: ...
- hdu 6394 Tree (2018 Multi-University Training Contest 7 1009) (树分块+倍增)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=6394 思路:用dfs序处理下树,在用分块,我们只需要维护当前这个点要跳出这个块需要的步数和他跳出这个块去 ...
随机推荐
- oracle数据库基于(streams流复制)的双机热备配置手册
------------------------------------------------------------------------------- 主数据库: 操作系统:windows 2 ...
- 链表操作Java实现
单链表 存储结构 public class ListNode { int i; ListNode next; ListNode(int i) { this.i = i; } public String ...
- Java笔记1: 输入输出与变量常量
输入方法 nextLine 以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符. 可以获得空白的一串字符. import java.util.Scanner; pu ...
- TP5实现自定义抛出异常消息(关闭debug)
重写Handle的render方法,实现自定义异常消息----------------------------------------------------------------------- 首 ...
- python 2 和 python 3的区别
python2和python3区别 python2:源码不统一,源码(功能)重复,维护困难,除法的时候返回来的是小数点,()浮点数 python3:源码统一,源码不重复,除法的时候返回来的是整 ...
- python中property属性的介绍及其应用
Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回. 使用property修饰的实例方法被调用时,可以把它当做实例属性一样 property的 ...
- FTP-实例(Md5验证)
import socket, os, hashlib server = socket.socket() server.bind(("localhost", 9999)) serve ...
- 怎样解决在执行 vue init 时提示 "vue : 无法加载文件" 的问题?
注意, 以下操作需要 以管理员身份 在 PowerShell 中进行, 不能是 CMD / Git Bash 等. 1. 以 管理员身份 运行 PowerShell 2. 执行 get-Executi ...
- Python(八) —— 异常(概念、捕获、传递、抛出)
异常的概念 捕获异常 异常的传递 抛出异常 异常的概念 程序在运行时,如果 Python 解释器 遇到 到一个错误,会停止程序的执行,并且提示一些错误信息,这就是 异常 程序停止执行并且提示错误信息 ...
- bat 将war文件转换成ear文件
1.无需拷贝war文件,自动获取war set path=%path%;D:\jdk\jdk1.6.0_31\bin;C:\Program Files\7-Zip del **0001-control ...