FBH 的 Trick 小本本
2026-01-10
我觉得总结这个是对的。
忽略正负号
题目:CF351E
这个题忽略符号直接按照绝对值做就行,因为所有位置都接受操作,可以使得一个位置变化后,受影响位置进行变化加以对冲。
2026-01-12
Tarjan缩点后点的排序是逆拓扑序的
拓扑序上 DP 判断重边需要记录上一次的转移位置
题目:LGP2272
这个题缩完点后就可以直接 DP 了,不用再跑拓扑排序。
2026-01-13
单调队列优化 DP
题目:LGP3089
设 d p i , j dp_{i,j} dpi,j 表示当前已经跳到了第 i i i 个位置,上一个位置是 j j j 的最大值, d p i , j = d p i − 1 , j − p i − 1 + p i dp_{i,j}=dp_{i-1,j}-p_{i-1}+p_i dpi,j=dpi−1,j−pi−1+pi, d p i − 1 , j dp_{i-1,j} dpi−1,j 定义在 x j − x k ≤ x i − 1 − x j x_j-x_k\le x_{i-1}-x_j xj−xk≤xi−1−xj 上, x i − 1 ≤ x i x_{i-1}\le x_i xi−1≤xi,所以,这里的 k k k 会更多,所以,确定一个最大转移的 k k k 即可。
所以说,这类题会给你冗余的时间让你去算这个窗口的长度 k k k,遇到了别慌!
2026-01-14
合法区间个数想分治
题目:AT_abc248_h
这个按照原题做,显然不太需要分治算法,但是,如果 k ≤ n k\le n k≤n,那么,我们就应该考虑分治了。因为分治的优势在于当前只计算跨中点的区间个数。
2026-01-15
平面矩形覆盖问题,可以考虑并查集
题目:LGP4737
这个题就很巧妙,因为对于一个覆盖了其他小矩形的大矩形而言,存在一些牛的数量的祖先关系,适用于并查集维护。
2026-01-19
偏移量+二分可以控制数量要求
题目:LGP2619
为了控制白边数量,我们增加一个偏移量,二分即可。
2026-01-20
区间元素个数,按照最后出现位置统计即可
题目:LGP1972
对于 n ≤ 1 × 10 5 n\le 1\times10^5 n≤1×105,一个莫队就能解决......
然后呢?和我 Trick 大标题里总结的一样,对于每个元素,只统计其最后出现的位置,对于已经插入的元素,记录一个 p r e pre pre 数组,动态单点修改,套一个树状数组,做完了。
2026-01-22
除以2下取整,考虑扔到堆里理解,分左右做
题目:LGP2606
这个题要求 p i > p ⌊ i / 2 ⌋ p_i>p_{\lfloor{i/2}\rfloor} pi>p⌊i/2⌋,转化为小根堆上,更好理解,同时启发了 DP 的转移,保证质数,存在组合数取模,套一个 Lucas 没了。
2026-01-23
复杂序列信息维护,考虑分块+并查集
题目:LGP8576
题目式子化简后,要维护阶乘、阶乘和、阶乘积以及逆元等神秘信息,普通线段树已经炸了,启动分块。但是,查询并不很容易,套一个并查集,将相同元素扔进一个集合,这样查询就比较方便了。
2026-01-28
每个元素都连续出现恰好一次,可以使用平方和来做
题目:LGP3792
这个第二个查询要求 查询区间 [l,r] 是否可以重排为值域上连续的一段 ,单纯的和性质不够强,如果使用平方和,那么会大不一样。或者,也可以使用 x i x^i xi( x x x 为固定整数),或异或和,或立方和......适当选择模数就可以了。但是我甚至没有取模,就稀里糊涂的过了,照理来说绝对不应该过啊......难道 2 31 2^{31} 231 这个自然溢出在这题是可行的?
2026-01-28
gcd相关
题目:LGP12579
这个把 gcd \gcd gcd 的性质应用起来了。就是一个贪,相当于每次取 gcd \gcd gcd 的数越多,就越小。应用一下,图论建模+二分+分治即可。