有时间有心情(那就是没有)就逐渐回顾一下写题的过程中学到了哪些手法。
对于新手来讲每个技巧都是新奇而精妙的。
就按照时光轴
这一栏的题目顺序来吧。
1.拓扑序上无环的判定及拓扑序上的dp,cf#541div2D
2.两种关于并查集的手法:1.开虚点的并查集,后来在西北大学校赛题解中才知道是带删除的并查集,那里的动态开点更普适一些;2.合并后需要有先后顺序,则设置l和r数组,f数组也变成fl和fr。这样就是条链集。 cf#541div2F
3.字符串常常转化到26个字母上的操作,cf#541div2E
4.预处理每排是否与上一排相同,用数组记录,为之后的枚举做准备,cf#edu59D
5.dp的一种套路:一些会有冷却时间的任务,某时间点如果有多个任务可以多选,只有一个任务则必做。做法是倒着扫,dp[i]中i代表时间点。洛谷1280.后面还有个cf题是更复杂一点的,但大方向一样:cf#536div2E,虽然某任务可以选好几个时间点去开始做,但其实根据题目规则已经贪心固定了,预处理好哪个时间做哪个事后倒着dp即可。
6.在坐标轴里走来走去,列式子发现各种方案都一样的思维题。BZOJ1108
7.常见套路:树状数组或者线段树维护扫描线,必要时离散化。BZOJ1218学到的更多:当要维护一个二维窗口时,如果说窗口不包括边界上的点,则处理时把边长-1之后即可当作包含边界点处理(整数域);差分的思想,有时是滑动窗口的,有时是dfs的,等等。就是进入范围时计数++,当走出这个范围时计数--;
8.无平方因子数,意味着分解后各质因子的次数为1;求第K大常有分治思想解决,本题二分;容斥的过程:先把所有的数都加上,然后直观感受哪些不该加,比如本题:第二轮把4、9、16的倍数都减去,然后把重复的再加回来……比如36在4和9的删除轮多删一次,所以要加回来;最后,质数请时常关注莫比乌斯函数和欧拉函数,此题容斥系数恰为mu。BZOJ2440
9.不算技巧,对题目本质的深刻理解。cf #546div2D
10.预处理,使得之后转移O(1);期望在相遇时是0,故记忆化搜索。BZOJ 1415;还是知道终态的期望往起始推tc 9915
11.转移时中间很长一段都是一样的则直接大幅压缩路径长度。POJ3744、洛谷1052
12.货币系统套路:从小到大排序,如果该值不能被之前的表示则加入系统。洛谷5020