dashena
计数
- 全排列计数的一个套路是设 \(f_i\) 是将前 \(i\) 个数字填入排列的方案数,后面的维度可以按照所求补充,然后考虑新加入一个数对答案产生的贡献。(P6323、P2401)
- 看到式子题考虑钦定里面的某些量,然后拆式子推出另外一些量的范围,进行计数。(P1493、P4165)
- 高维前缀和 \(A_{k,i} = \sum_{j \le i} \binom{i-j+k-1}{j-1}A_{0,j}\)。
ds
- ST 可以线性重构。如果只是在末尾、开头等特定位置可以做到 \(O(\log n)\) 重构。也可以结合根分,当 \(f_{i,j}\) 里 \(2^j \le \sqrt n\),\(j\) 较小时暴力重构,\(j\) 较大时分裂下去即可。可以证明时间复杂度 \(O(n\sqrt n)\)。(P1198、P10680)
- 珂朵莉树在解决类似总和等简单问题的时候,可以直接在 assign 的时候维护。这样跑的快一些。
数学
- 看到因子分解题考虑从因子、质因子两个方面入手。一般来讲因子个数不会很大。(ABC461F)
- \(x = p_1^{a_1} \times p_2^{a_2} \cdots p_n^{a_n}\) 的因子和是 \((1+p_1+p_1^2 + \cdots p_1^{a_1})(1+p_2+p_2^2 + \cdots p_2^{a_2}) \cdots (1+p_n+p_n^{2}+\cdots p_n^{a_n})\) 其中每一项都可以用等比数列求和公式算。
- \(x\) 是 \(y\) 的一个因子(\(x \ne y\)),满足 \(x \le \lfloor \frac{y}{2} \rfloor\)。
- \(|x-y| \le x \oplus y \le x + y\)。
- gcd 的衰减是很快的。如果只关心 gcd 的值的话,对于同一个右端点只有 \(\log V\) 种。log 也是同理。
- \(\gcd(F_n,F_m) = F_{\gcd(n, m)}\)。
- \(F_n = \displaystyle \frac{(\frac{1+\sqrt 5}{2})^n - (\frac{1-\sqrt 5}{2})^n}{\sqrt 5}\)。也就可以推出 \(6\) 柿的结论。
树上问题
- 每条链上的重链个数只有 \(O(\log)\) 个。(P5391)
- 树上两条路径有交,满足其中一条的 lca 在另一条上。(P3398)
图论
- 关心某个集合内任意两点的最短路最值可以考虑二进制分组。
dp
- 刷表的时候,没有必要一次性把所有后继状态都更新。你发现如果某个后继可以通过另一个后继的后继更新掉,这个后继就没必要更新。这样可以大幅减少状态量(P2831)
序列相关
- 排列问题可以从逆排列入手。(ARC121E)
- 当 \(i\) 和 \(2i,2i+1\) 有关系时,可以建树树形 dp。(P2606)
杂项
- 有且仅有可以转化成最少和最多。(P3084)
- 贡献函数单调不增的问题可以考虑贪心,用堆维护增量。(P2707)
posted @
2026-05-23 20:45
RainyRadio
阅读(
27)
评论()
收藏
举报