禁止废话
把一个题转化成感觉不可做的形式(例如 NP 问题)时,一定是没有发现某些性质。
时空
时间复杂度的计算一定要注意有没有什么 \(\sum\) 的限制,有没有隐含的条件(如自然根号)。
空间不够用的情况下可以考虑分批处理独立的部分。常见于各种奇怪 ds 题。
DP
状态值域互换是很常见的技巧。
某些题目中转移可能是比较奇怪的偏序集,扯清转移顺序很重要。JOI2012 kangaroo,UR#13 Ernd。
费 用 提 前 计 算。
背包 dp
大多数背包 dp 是 \((\min/\max,+)\) 状物,统计方案的是 \((\times,+)\) 状物。
插入一个元素相当于和二项式做卷积 \(O(m)\),合并相当于卷积。\((\times,+)\) 存在逆运算,可以支持删除。注意查两个背包合并后的单点是 \(O(m)\) 的。
\((\min/\max,+)\) 背包实际上是维护半群运算,所以会有双栈维护队列(JZOJ6358 小ω的仙人掌)、DSU on tree(即流传的 dfs 序优化)优化树上背包、点分治做路径背包(旅行)、挂到猫树上等技巧。
概率期望 dp
如果带环转移不取模,在时限足够的情况下可以多次迭代,期望如果存在一定是收敛的。
期望线性性质,独立的可以拆开算,(BZOJ4318 OSU!,ARC165E Random Isolation,CF1864H Asterism Stream)。
dp 优化
斜率优化具体情况具体分析,抓住 \(x,y,k\) 的单调性。
wqs 不只是求单点。如果求一个凸包上多点最值,可以先找到整个凸包最值,向左向右找到第一个在给定集合内的横坐标求两次单点即可(CF2125F Timofey and Docker)。
决策单调性分治可以在外面套 CDQ 实现半在线。另外看到了个单 log 做法。
不好优化(如没有决策单调、没有凸性等常见性质)的半在线可以先 CDQ 变成离线。
通过重定义矩阵乘法可以用矩阵快速幂优化每轮转移一样的 dp(CF461E Appleman and a Game)。
连续段 dp
转移顺序很重要。常见于排列计数、类似排列的偏序集计数。
在钦定转移顺序后,可以将状态简化为若干形态类似的段,能快速求出新建一段、合并两段、接在一段开头或末尾的贡献。在插入难做时可以考虑。
例题引用。
数据结构
信息维护
注意到 \(\gcd\) 做差分,异或做异或差分等不会对答案有整体影响。
并查集
可撤销并查集最好写按秩合并,启发式合并可能会有奇妙问题([PA 2017] 商旅 / Osady i warownie)。
可撤销带权并查集由于不能路径压缩,每次查询一个点的权值要老老实实算一遍( CF2104G Modulo 3)。
树上问题
不要忘了括号序列。
计数
常用方法:通过构造单射,钦定一个好做的计数结构。
两个方向的类似限制可以容斥成一个方向。
图计数
划分阶段是底层逻辑。
有标号 DAG 计数考虑容斥,钦定入/出度为 \(0\) 的部分。[省选联考 2024] 重塑时光,[清华集训 2014] 主旋律。
集合幂级数 \(\exp\) 的组合意义:划分为若干个非空集合的带权方案数。逆运算 \(\ln\),如连通性生成子图计数。
最小生成树:省选联考 2025 岁月,JSOI2008 最小生成树计数。
形式幂级数
OGF 组合意义:\(\sum\limits_{i=0}^{\infty}F^i=\dfrac{1}{1-F}\)。
EGF 组合意义:\(\sum\limits_{i=0}^{\infty}\dfrac{F^i}{i!}=e^F\)。
排列计数
一些问题中,某些变量在对当前状态无影响但是对后面状态有影响时可以延迟钦定。
对排列的划分计数,常用单射钦定技巧确定计数结构。
字符串
SA 生来注重刻画字典序关系。
能用 Trie 不要用 ACAM,能用 SA/KMP/EXKMP 不要用 SAM。
贪心、构造、Ad-hoc
不知道怎么形容这个东西,某些可行性问题可以拆成判断所有子问题的可行性。PKUSC2022 撸猫,某模拟赛 T4。Hall 定理。
杂项
偏序集内部最小链划分数等于最长反链大小,最长链大小等于最小反链划分数。
区间图是弦图,弦图的最小染色数等于最大团。
求 \(\dfrac{a}{b}\) 对 \(p\) 取模时,如果 \(b\) 不存在逆元但是比较小,可以求 \(a\) 对 \(p\times b\) 取模的结果,最后再除以 \(b\) 规避模数域下的除法。
随机赋值+和哈希/异或哈希有奇效([PA 2017] 商旅 / Osady i warownie,[CSP-S 2022] 星战)。
某些 \(\max/\min\) 还有绝对值该拆就拆。\(\max\{|x-y|\}\) 状物是假的,绝对值可以直接扔掉,但是 \(\min\{|x-y|\}\) 不行。
注意可能的自然根号 / log。

浙公网安备 33010602011771号