复习
互质区间计数,这个题非常有意思,他首先是按套路拆成左端点,又是按套路把数暴力存在因子的平衡树上查前驱后继
修改的时候就和天才少年那个题一样把平衡树的修改,线段树插入撤销相当于+1-1,根据他不可能删掉没有的操作可以转化为求最小值个数
xor circle,特判比较多,但是跟我们的启示是如果出现相邻……异或……,一般就是有类似循环同构的东西
two trees,给我们启示是遇到一个题可以想想他跟奇偶性有什么关系,而奇偶性也许可以导出欧拉回路
疫情控制:一个很显然的贪心是先都移到根下面的那个位置,再类似基环树dp一样贪心调整
在树上某个节点把东西重排也是比较常见的一个套路
a or b 这个题要想到或的本质是相同的无用,然后贪心就好了
微信步数,本质是一个均摊,利用批量操作本质相同的性质,逐渐缩小区间
关于二分的题,卡你非常麻烦,实在不会可以试试乱搞冲过去,同时需要处理好细节
成绩单:区间dp两大套路,启发式分裂&端点&无判断分裂
预处理一个区间去掉一个点也是常用的套路
一个东西不能想复杂了,越简单越好
关于洛谷的题:
碰到矩阵的题要想魔改悬线法或者bound住上下边界后跑双指针
树的形态不决用菊花图&链,注意一类……之后就没有贡献了的题
由于是noip,多想想二分,多想想前缀和&差分,是否有单调性,能不能决策优化
多想想拆点,把一个东西拆成单个对其的贡献
在维护相邻的问题时,链表是个好东西,但极其难调,慎用
对于问题多想想能不能拍到二维平面上,能不能跟几何意义扯上关系
分治同样是个重要的思想,在一类贪心题里可能会用到
倍增规约二分,排序规约二分
图论算法好久没考了
2 sat不建返图是错的
最小生成树跟二分紧密相连,本质上是对最短路的一种极限
如果一个东西你觉得很可以可持久化&线段树合并但是干不了不妨想想能不能动态维护 子树补&栈
树上还有一类是涉及siz的,多推推,退不出来也没就
整除分块
多容斥,多打表找规律
去年考了hash了,多想想是不是可能是trie
const可以优化常数
遇到min max这种的,可以试着二分之后转成01问题
式子要推准,推慢总比找错花的时间短,人类三大错觉,我能反杀
并查集维护连通块也是一大利器
在树上遇到循环定义的式子多半你已经win了
单调栈遇见几乎没救,单调队列优化dp可能还可以抢救一下
dp在某些情况转化成图论可能会更显然?
允许离线的情况下可以预先把什么东西建出来再考虑问题
自己不会斜率优化,可以用前缀和+排序凑
一定不要想当然,能多就不少,防止溢出少算
排序+区间dp or 背包老套路了
遇事不决dp差分,或者说到……为止的什么什么
或者是枚举到1……i的排列,第j个……怎么怎么
还有一类是主对角线……副对角线……
感觉洛谷dp题单老多套路了,多抽象,多转化
可以尝试归约到斯特林数,以防万一
不要忘了矩阵快速幂
遇事不决奇偶型构造,再不行拆开之后奇偶性构造
遇到区间拆点扫描线,不要怂
增量法
(k<<1)|(m>>(i-1)&1) 泛化物品公式,背过得了
拆位拆位都可拆
均摊也是个重要的考点
等价假装转换不是很显然,多思考
永远不要信任自己的代码能力
注意复杂度平衡