爆1警告#3

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

爆1警告#3_第1张图片

设 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/

你可能感兴趣的:(补题)