各种 trick……
数据结构常见套路
- 去 log 的套路:
- 可持久化。
- 线段树上二分 / 树状数组上倍增。
- 处理子树的套路:
- 如果信息有区间减法 / 带修改,首选 DFS 序。
- 线段树合并。
莫比乌斯反演常见套路
- 如果题目的式子跟 gcd 有关,优先考虑莫反。
- \mu * 1 = \epsilon 比莫比乌斯反演公式快很多(指推导的时候)。
- 如果有枚举约数的,尽量考虑把它提到式子最前面。
- 对所有数对的 \gcd 算一个式子时,考虑枚举 \gcd 并算它贡献的次数。
- 当 \gcd(x,y) > 1 时,\mu(xy) = 0。
一些公式
- \sum\limits_{i = 1}^n i = C_{n + 1}^2 = \dfrac {n (n + 1)} 2
- \sum\limits_{i = 1}^n i^2 = C_{n + 1}^2 + 2C_{n + 1}^3 = \dfrac {n (n + 1) (2n + 1)} 6
- \sum\limits_{i = 1}^n i^3 = C_{n + 1}^2 + 6C_{n + 1}^3 + 6C_{n + 1}^4 = \dfrac {n^2 (n + 1)^2} 4
某 border 结论证明
以下设 n = |S|。
弱周期引理
设 p,q 为 S 的周期,p + q \le n,则 \gcd(p,q) 也是 S 的周期。
不妨设 p > q,则令 d = p - q。
对于 i - q > 0,有 S_i = S_{i-q} = S_{i+p-q} = S_{i+d}。
对于 i + p \le n,有 S_i = S_{i+p} = S_{i+p-q} = S_{i+d}。
当 p + q \le n 时不存在 i 同时不满足以上两者。
引理
S 的所有长度不小于 \frac n2 的 border 的长度为一个等差数列。
设 p 为 S 的最小周期,不妨设 p \le \frac n2。
设 q 为 S 的一个周期,满足 q \le \frac n2。
则由弱周期引理可知 \gcd(p,q) 同为 S 的周期。
由上可知 \gcd(p,q) \ge p。
故显然 p \mid q。
证明
字符串 S 的所有 border 按长度排序后可以划分为 O(\log n) 段等差数列。
将 S 的 border 长度 x 分类为 [1,2),[2,4),\dots,[2^{k-1},2^k),[2^k,n)\qquad (2^k \ge \frac n2)。
对于 x \in [2^k,n),由以上引理可得 x 构成一个等差数列。
对于 x \in [2^{i-1},2^i):
设 m 为 \max x,易知剩下的 x 也为 S_{1\dots m} 的 border。
而 x \ge \frac m2,故由上引理易知 x 构成一个等差数列。