HDU6038:Function(循环群/节+找公式)】的更多相关文章

传送门 题意 给出一个\(0\sim n-1\)的排列a,一个\(0\sim {m-1}\)的排列b,询问满足\[f(i)=b_{f(a_i)}~~(0\le i\le n-1)\]的函数的个数 分析 由于 \(f(i) = b_{f(a_i)} = b_{b_{f(a_{a_i})}} = \underbrace{b_{\cdots b_{f(i)}}}_{l\text{ times }b}\),我们发现a中的l个数构成了循环群,而只有当\(j为l\)的因子时才满足上述函数(请注意观察公式及结…
解法:这道题很有意思,值得一做和细细思考. 首先是我们要观察这个映射公式,他的实质是什么?其实就是b到a的循环映射,这是因为a数列和b数列都是0-n-1的排列,意味着每个数都是唯一的,那么ab的这个循环映射就是循环的封闭的不会影响到其他数.这样的话b到a的映射就形成了一个个的循环节. 那么我们考虑先分别把a数组和b数组的循环节找出来,此时我们要思考怎样才能满足这样的循环映射呢? 答案就是a的循环节大小要是b循环节大小的倍数!!!这个有点难解释,如果不是倍数关系的话会出现:b开始映射a,b的第一轮…
/** 题目:hdu6038 Function 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意:给定一个a排列[0,n-1],一个b排列[0,m-1]. 定义函数f,定义域为[0,n-1],值域为[0,m-1] 请计算有多少种函数,满足f(i) = bf(ai) 对于每一个i,0<=i<=n-1; f(ai)是b排列的下标.ai表示a排列下标为i的值 两个不同的函数区分是,至少有一个i,f(i)不同于原来的f(i)': 每一个f(i)都…
Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Problem Description We know the Fibonacci Sequence F1=1,F2=1,F3=2,F4=3,F5=5, ... Fx = Fx-1+Fx-2 We want to know the Mth number which has K consecutive "0&qu…
MathType是由美国Design Science公司开发功能强大的公式编辑器,专门用来对数学公式的编辑,与常见的文字处理软件和演示程序配合使用,能够在各种文档中加入复杂的数学公式和符号.感恩节期间(2016.11.24-2016.11.30),MathType中文官网面向广大用户朋友隆重推出持续7天的MathType中文版 6折优惠活动,仅需¥388. 活动购买地址:http://www.mathtype.cn/goumai.html 活动期间购买MathType公式编辑器只需要6折,五分钟…
题意: 分析: 容易想到先把T数组按位置和对应权值建一个有向图(类似置换群那种指法) 然后图建完了,如果C[]里面都是2,那显然只能凑出那些偶数,奇数是不能凑出来的 如果C[]有1有2呢? 事实上是可以凑出所有自然数的…… 找一个含有数字1的棒棒糖图形(先一条链,后一个环) 1)如果环中全是2,没有1  从起点一直走下去一定是这样一个情况.......12222222222.....  我们发现可以根据12222222.....来凑出所有数 2)如果环中有1,那么我们可以用数学归纳法来证明,假设…
把b数组的所有置换群求出来,用数组记录一下每个大小所出现的次数. 然后求a的置换群,对每个置换群求能被其整除的b的置换群的大小总和(只有这些才能满足构造出一个f,且不自相矛盾),然后把它们全都乘起来就是答案. #include<cstdio> #include<cstring> using namespace std; typedef long long ll; #define MOD 1000000007ll int n,m,a[100010],b[100010],zu; boo…
Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 187893    Accepted Submission(s): 46820 Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A…
拓展欧几里得:求导&二分 POJ-1061 拓展欧几里得的应用,需要开long long 第一次做这个题的时候进行了毫无用处的找公式(?),是个现在的我看不懂的迷之思路. 第二发的时候还是不明白位数与数据大小的年轻人,1e9以上开long long,可以到1e18,2^63以上直接ull,2^64及以上考虑一下换思路吧. 先放乱码 #include<cstdio> #include<iostream> using namespace std; long long r; lo…
一. 什么是模块 Python中的模块即单个的Python代码文件,为什么称为模块呢?这是因为在Python中,每个独立的Python文件都可以作为被其他代码导入的模块使用,导入的模块有自己的名字空间和作用域,导入后可以通过:模块名.变量.模块名.函数访问模块内的变量和调用模块内的函数. 二. 模块的导入方法 import 模块名1,-,模块名n,导入多个模块的所有成员: import模块名as 模块别名,给导入模块起一个别名,如: if filetype == 'xml': import xm…