一些套路&tips&随记

dp

状压dp

  • 多种情况比如 \(0,1,2\) 时可以考虑状压最小的那个 \(n/3\)
  • \(70\) 这种复杂度可能和 \(n/4\) 状压有关,可以考虑 \(\leq 3\) 的状态是否不用记录

树形dp

  • 转移需要每个子树卷起来?看看一条链有没有简单做法,尝试树剖+分治FFT
  • 序列上可以做的 dp 搬到了树上?考虑出栈序 luogu 2305 [NOI2014] 购票

dp优化

  • 矩乘优化 dp 如果矩阵太大可以想一想有没有一些转移是本质相同的可以压缩转移大小 CF506E Mr. Kitayuta's Gift

数据结构

  • 线段树二分边界不在最边上的时候注意两类讨论,不要写假了 P3822 [NOI2017] 整数 (uoj数据)
  • 凸包建的时候 det 要带等号,判断重(chong)点,xsy1865A
  • 一言难尽 xsy1866A 可以线段树 2log 搞

字符串

后缀自动机

  • \(root\)\(x\) 的 fail 树上的每个父亲的路径并起来是 \(s[1...x]\) 的所有本质不同后缀
  • sam 上根到每个点的路径对应着所有本质不同的子串
  • \(1\to fail[x]\)\(1\to x\) 的后缀

数学

和式相关

  • 注意在 \(m<0\) 时并不满足 \(\binom{n}{m}=\binom{n}{n-m}\),边界情况需要特判
  • min-max 容斥 \(\max(S)=\sum_{T\subset S}(-1)^{|T|-1} \min(T)\)
  • kth-min-max 容斥 \(\max_k(S)=\sum_{T\subset S}(-1)^{|T|-k}\binom{|T|-1}{k-1} \min(T)\),这两个柿子在期望意义下也成立,如 luogu 4707 重返现世
  • 维护一个二项式的可以 dp 考虑裂项 \(\binom{n}{m}=\binom{n-1}{m}+\binom{n-1}{m-1}\) 来转移,如 luogu 4707 重返现世
  • \(\sum iA^i=\dfrac{A}{(1-A)^2}\)

数论相关

  • \(10^5\) 以内平方分解最多 4 个数
  • \(2^2\pmod 3=1\)
  • 对于多项式 \(f,g\)\(h=f\times g\)\(\gcd([x^i]h)=\gcd([x^i]f)\gcd([x^i]g)\)

期望

  • \(k\) 次函数+期望,考虑操作完了是不是还是 \(k\) 次函数? NOI2019 斗主地

图论

  • \(dijkstra\) 可以用 \(V\) 个 vector 做到 \(O(m+V)\)
  • 完全图求最小生成树可以考虑淀粉质/边分治+Boruvka
  • 记得复习一下各种网络流模板
  • Dilworth 定理:dag 最小链覆盖等于最长反链

科技

多项式与生成函数

  • 求解 \(A=B^n\),可以 \(A^\prime B=nAB^\prime\),比较两边的 \([x^{n-1}]\)
  • 对于有 \(\frac{1}{x}\) 的 GF 形式,求递推可以考虑两边同时乘 \(x\),也就是同时移位,这个时候需要注意边界条件,因为 \(-1\) 会转移到 \(0\)
  • 接上一条,有的时候不过多考虑边界情况有可能有神秘效果,这个时候 \(A\) 可能能够用 \(\hat A\) 来表示,比如 \(A_i=\hat A_i+\hat A_{i-1}\) 之类的
  • \(k\) 个大小为 \(a_i\) 的联通块的生成树个数是 \(n^{n-2}\prod a_i\)

杂项

卡常

  • 重载运算符重载 += 回比重载 + 快很多,卡常时可以考虑重载 +=
posted @ 2021-10-16 15:27  YuukiYumesaki  阅读(78)  评论(0编辑  收藏  举报