160110 ~ 160117总结 —— 毕姥爷的题

先模一下大神 %%%


160110


T1

三分套三分

可以利用样例,但会被卡精度。。。


需要的知识:可以说python吗。。。



T2

数列取模是有循环节的,然后里面一层的模数就可设为上一层模数下的循环节,至于循环节,可以先分解质因数(n = p1^k1 ... ps^ks),然后找到每个因数(pi^ki)的循环节,然后取lcm,也可以用中剩来做。暴力找出7个模数,打表。

然而我 sb 的只找了一个模数所以就 WA 成了暴力的分。。。


需要的知识:Miller-Rabin + Pollard-Rho (然而这只能怪家里电脑太慢。。。)CRT



T3

不会啊,TAT。。。


需要的知识:polay + 搜索



160112


T1

跟国王奇遇记差不多

1)找到一个两个变量的递推式,矩阵乘法 O(k^3 logN)

2)上式做一下变形,找到f(n,k) -> f(n+1,k) 和 f(n,k) -> f(2n,k),然后用类似快速幂的方法做 O(k^2 logN)

3)K阶多项式,做K次差分,最后会得到一个全为0的数列 O(k^2) (差分恒等变换?)

4)推到了一个单变量的递推式。。。O(k^2)


需要的知识:数学



T2

证得任何一个数在不超过60次平方过后,值将不在变换,然后记录一下,是否达到那个值,然后线段树暴力搞。。。


需要的知识:线段树



T3

二进制上每一位不互相影响,分开处理;

可以看成最小割,分成两部分,一边是0,一边是1,有限制的地方容量设为INF


需要的知识:最大流



160114

T1

分析一下,若前一个数确定,后一个数是有范围的

f[i , j] : 前 个数以 结尾

f[i , j] = min(f[i , j], f[i - 1 , k] + a[k , j])  (s <= k < t , s = (j & ~(lowbit - 1)) ^ lowbit , t = s + lowbit)


需要的知识:DP



T2

状压DP

但有2^16种状态,考虑优化

1)肯定只能放偶数个位置,即 1 / 0 的个数为偶数

2)有些摆放方式不可能,所以方案恒为0

3)有很多状态可以由互相旋转,对称得到,所以方案数一样

然后压缩得到了 1723 种状态,矩阵乘法明显不可行,考虑递推优化(算出来1666阶)

首先可以用上述dp跑出这部分的答案,得到第一张表

然后配出系数得到第二张表

然后可以快速幂了。。。


蒟蒻表示并没想到后面的优化,只得了40分,(真的没有造世界。。。


需要的知识:状压DP、矩乘递推优化



T3

模数可以分解成4个比较小的指数,把表达式建成线段树,每个点记录将数 变成了 f(i),所以就成了单点修改和区间询问,最后CRT合并。(偷懒,用了预处理。。。)

时间都花在了T2上,并没有做第三题,结果T3那么水TAT。。。

暴力跪


需要的知识:线段树、CRT



160116

//学了一个星期,大家都浪了起来。。。

T1

额,,,向下取整。。。


需要的知识:dp/搜索 打表



T2

维前缀和,先枚举位数,再枚举数字


需要的知识:DP



T3

才讲过的FFT

调了一整天啊T_T,结果是 pi 的精度没取够,,,最后实在调不出来,就在 pi 后面加了10位数,就对了。。。

还有long double 真是太鬼畜了,不敢用→→ (想起了说我内心鬼畜的某人。。。


需要的知识:FFT + 容斥


再模一下大神 %%%

你可能感兴趣的:(总结)