各种 trick 合集

各种 trick……

数据结构常见套路

  1. log 的套路:
  2. 可持久化。
  3. 线段树上二分 / 树状数组上倍增。
  4. 处理子树的套路:
  5. 如果信息有区间减法 / 带修改,首选 DFS 序。
  6. 线段树合并。

莫比乌斯反演常见套路

  1. 如果题目的式子跟 gcd 有关,优先考虑莫反。
  2. μ1=ϵ 比莫比乌斯反演公式快很多(指推导的时候)。
  3. 如果有枚举约数的,尽量考虑把它提到式子最前面。
  4. 对所有数对的 gcd 算一个式子时,考虑枚举 gcd 并算它贡献的次数。
  5. gcd(x,y)>1 时,μ(xy)=0

一些公式

  • ni=1i=C2n+1=n(n+1)2
  • ni=1i2=C2n+1+2C3n+1=n(n+1)(2n+1)6
  • ni=1i3=C2n+1+6C3n+1+6C4n+1=n2(n+1)24

某 border 结论证明

以下设 n=|S|

弱周期引理

p,qS 的周期,p+qn,则 gcd(p,q) 也是 S 的周期。

不妨设 p>q,则令 d=pq
对于 iq>0,有 Si=Siq=Si+pq=Si+d
对于 i+pn,有 Si=Si+p=Si+pq=Si+d
p+qn 时不存在 i 同时不满足以上两者。

引理

S 的所有长度不小于 n2 的 border 的长度为一个等差数列。

pS 的最小周期,不妨设 pn2
qS 的一个周期,满足 qn2
则由弱周期引理可知 gcd(p,q) 同为 S 的周期。
由上可知 gcd(p,q)p
故显然 pq

证明

字符串 S 的所有 border 按长度排序后可以划分为 O(logn) 段等差数列。

S 的 border 长度 x 分类为 [1,2),[2,4),,[2k1,2k),[2k,n)(2kn2)

对于 x[2k,n),由以上引理可得 x 构成一个等差数列。

对于 x[2i1,2i)
mmaxx,易知剩下的 x 也为 S1m 的 border。
xm2,故由上引理易知 x 构成一个等差数列。

0 comments
Anonymous
Markdown is supported

Be the first person to leave a comment!