$\text{Tricks}$ 合集
开坑记录一下做题过程中遇到的有用有推广意义的 \(\text{tricks}\) 。
数学
概率期望
\(\text{Min-Max}\) 容斥
对于一类求形如 “...... 都被满足” 或者 “至少满足一个条件” 等字眼时,不放考虑其对应的 \(\text{Min}\) 、\(\text{Max}\) 是否方便求解。
- 省选模拟赛 \(\text{3.13,T1}\) :对于每一行每一列的 \(\text{Min}\) 是较容易直接计算的,再套用 \(\text{Min-Max}\) 容斥即可。
数据结构
寻求局部单调性
一类求解最大/最小值的题目,也许全局没有单调性,无法直接二分。但如果 树链、子树 等存在单调性,可以利用这个分段二分。
- 省选模拟赛 \(\text{3.14,T3}\) :枚举起点,每一条重链上存在单调性,直接线段树上二分即可。
\(\text{DP}\)
计数
拆贡献
一类题目要求对所有情况下计数,每种情况中每个部分有其对应的贡献,可以考虑对于每个部分计算其在所有局面中的贡献。
- ARC140D - One to One 每一个连通块必定包含恰好一个环,考虑每一个环出现的次数即可。
可重序列计数极大/极小区间
极大区间 定义:若 \([l,r]\) 为极大区间,则 \([l,r]\) 去重之后与 \([l,r+1],[l-1,r]\) 去重后的结果不同。
极小区间 定义类似。
一类序列上计数问题可以转化成对 极大区间 或者 极小区间 来计数,具体选择哪个看题目中哪个会有更加良好的性质。
- ZROI2523 数区间集 极大区间不交,因此对其计数,再去重一下就行。
树形 \(\text{dp}\)
最优性问题
图论
树形结构
剥叶子
对于一些相邻节点存在限制关系的问题,可以考虑从叶子的情况入手(因为与之相邻的仅有一个)。
- ARC156C - Tree and LCS 对于每一层叶子结点标号重排即可,然后将其删除,继续考虑剩下的节点。
- ARC143E - Reversi 每次可以确定所有叶子结点与其父节点翻转的先后顺序,建出拓扑图即可。
构造
贪心
二进制运算从高位到低位贪心
从高位到低位考虑,判断每一位能否是 \(1\) ,贪心的选取结果就行。
\(\text{ps.}\) 这个 \(\text{tricks}\) 在很多题目里都有见到,但是还是不是很能切掉。
- 省选模拟赛 \(\text{3.10,T1}\) :将合并操作抽象为树,每次枚举某一位在不影响之前位的情况下是否可以为 \(0\) 。

浙公网安备 33010602011771号