A http://poj.org/problem?id=3128
给一个置换 问是否存在一个置换的平方是所给置换
可以发现规律 长度为偶数的循环节平方后会变为偶数个循环节
奇数长度的循环节平方后长度仍然为奇数
对所给置换检查偶数循环节的个数是否为偶数即可
B http://codeforces.com/problemset/problem/341/D
标准的二维树状数组
稍微看了一下 对二维树状数组
横竖的ij都有着树状数组的性质 都表示一段长度为2^k的和
但是我不会 以后补
C http://codeforces.com/problemset/problem/380/A
有两种操作增长序列
一:末尾添加x
二:复制前1-l到末尾c次
二分区间+递归查询
注意要用LL
http://paste.ubuntu.com/25118535/
D http://codeforces.com/problemset/problem/520/A
水题
E https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1205
物品需要经过M1处理ai时间后再给M2处理bi时间
求最快时间
显然M1处理完一个物品后马上用M2处理是最快的
将物品分为ai< bi和else两个集合
对第一个集合按ai升序排序
对第二个集合按bi降序排序
第一个集合可以理解为尽快把物品预处理完可以给M2处理
第二个集合可以理解为尽量让M2没有空闲的时间(不用等M1处理)
整个过程尽量让M2堵塞就是最优的
http://paste.ubuntu.com/25119254/
F https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1282
对指针位置求差分序列
对差分序列求最小表示法
对差分序列进行hash并标记个数
http://paste.ubuntu.com/25119817/
G http://www.lydsy.com/JudgeOnline/problem.php?id=1072
求全排列能被d整除的情况
dpij记录选择数字状态为i的情况下%d后为j的情况数
先枚举i再枚举j再枚举第k位数
在情况i下把k放在j情况的末尾
一个数字如果有重复的话会重复计算
同个数字的排列为1种
因此答案为dp[1<<(n-1)][0]再除每个数字i的个数!cnt[i]
http://paste.ubuntu.com/25118862/
H https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1188
设 GCD(m,i)==x, 则 GCD(m/x,i/x)==1
所以把问题变成区间[1,i/x]内与i/x互质的数字个数有多少
再把这个数字乘x就可以得到GCD(m,i)==x的个数
然后推倒一下
(好神奇 希望哪天能领悟)
http://paste.ubuntu.com/25120106/