我的 sb 错误 & 做题 tricks
让大家见识一下我的 sb 程度(
- 如果数据范围是 \([-2^{31},2^{31})\),那么就要用
long long版本快读!!!1 - 好好想一想建图 / 预处理等操作依赖的参数是否足够大 / 正确!
- 对 corner case 的处理(CF1789F, \(k = 1\))。
- 把 \(\mathbf{998244353}\) 打成了 \(\mathbf{998244253}\)。
- 心态绝对不能炸!(CSP-S 2023, ABC 326)
- 绝对不能用
x0, x1, y0, y1之类的! - 能不用 vector 就不用 vector!!
- 不要写错文件名!不要复制上一个代码!
std :: vector不要重复用size函数!!!
让大家见识一下做题的 tricks)
- 构造题,调整题目中给出的限制 / 条件,尝试满足一些特殊的情况,然后调整构造方案。
- 构造题,增量构造,每次加入一些元素,将其放在合适的位置以满足条件。关键就在于找到策略使得即能插入又能满足条件,有时需要合适的顺序才可以。
- 概率期望题,若出现 \(\mathbf{10^{100}}\) 很大的数直接按无穷大处理,答案一定是收敛的,然后直接做 DP / 解方程等操作。
- ?? 题,用暴力或特殊性质的算法 进行 数据分治,需要找到多种暴力拼起来以解决题目中所有的情况。
- 有若干二元组的限制 \((u, v)\),可以考虑建图:对于每一个限制 \(\symbfit{(u, v)}\) 都建一条 \(\symbfit{u \to v}\) 或者 \(\symbfit{v \to u}\) 的边。然后按连通块的形态(基环树?外向树?内向树?树?...)处理。
- 当想到一种 DP 的时候,并且需要优化,可以考虑使用 线段树 / 树状数组 等 DS 优化!
- 当数据范围在 \(30 \sim 40\) 之间的时候(即数据范围除以 \(2\) 可以暴力枚举),可以考虑使用 Meet In The Middle!
- 做题的时候可以把烦人的地方拎出来,通过 改变状态 / 顺序 等方式把烦人的地方消除,就变得很简单了。
- 设 \(\displaystyle f(x) = \prod_{i = 1}^{c}p_i \left(x = \prod_{i = 1}^{c}p_i^{\alpha_i}\right)\),其中 \(p\) 是质数且 两两不同,则 \(\gcd(x, y) \neq 1\) 当且仅当 \(\gcd(f(x), f(y)) \neq 1\)。
- 优化建图的技巧:可以考虑前后缀建图的技巧,直接上图:

- 构造操作的题,可以尝试先满足一些条件,然后 check 别的条件是否满足,CF1157G。
- 构造题判断无解如果涉及到 步数类似的量,可以考虑计算其上下界以判断!
- 换根的一些东西:初始树的根为 \(1\),假设我们已经把这种情况下的信息都预处理好了。若树根换为 \(rt\),那么 \(u, v\) 的 LCA 为 \(\text{LCA}(u, v), \text{LCA}(u, rt), \text{LCA}(v, rt)\) 中深度最大的点。那么 \(u\) 的子树变为:若 \(\text{LCA}(u, rt) \neq u\),那么 \(u\) 的子树未发生变化。否则设 \(v\) 为 \(u \to v\) 路径上的第 \(2\) 个点(或者 \(rt\) 的第 \(dis(u, rt) - 1\) 级祖先),\(u\) 的子树变化为整棵树减去以 \(v\) 为根的子树。
- \(\forall a, b, c \in \mathbb{Z}, \displaystyle \left\lfloor\dfrac{\left\lfloor\frac{a}{b}\right\rfloor}{c}\right\rfloor = \left\lfloor\dfrac{a}{bc}\right\rfloor\)。
- 树上有 \(a_1, a_2, \dots, a_k\) 总共 \(k\) 个点,并且按 dfs 序排序,那么把这 \(k\) 个点连通所需要的最小边数为 \(\dfrac{dis(a_1, a_2) + dis(a_2, a_3) + \dots + dis(a_{k - 1}, a_k) + dis(a_k, a_1)}{2}\),其中 \(dis(u, v)\) 为从 \(u\) 到 \(v\) 的路径所经过的边数。
- 考虑操作之间的关系 / 顺序 / 是否可被代替。
- 质数的密度是 \(\log\) 级别的。
- 一个每个点度数 \(\leq 2\) 的无向图的所有连通块的形态仅有 简单环(即 \(\symbfit{1 \to 2 \to 3 \to 4 \to 1}\)) 或 链。
- 最大和最小之间有什么关系?不一样?一样?可替代?计数?
- 推式子的时候可以想一想交换枚举顺序?枚举某个本质相同的量?可不可以用二项式定理?
- 范德蒙德卷积,\(\displaystyle \symbfit{\sum_{i = 0}^{k}\binom{n}{i}\binom{m}{k - i} = \binom{n + m}{k}}\)。
- 在一个长度为 \(n\) 的环上以 \(k\) 为单位跳 \(\geq n\) 次,设初始点为 \(s\),那么最后经过的点为 \(u \bmod \gcd(n, k) = s \bmod \gcd(n, k)\) 的所有 \(u\)。
- 斯特林拆幂:\(\displaystyle n^m = \sum_{k = 0}^{m}{m \brace k}\dbinom{n}{k}k!\)。
- 斯特林数预处理:
v[0][0] = 1;
for (int i = 1;i <= 2020; ++ i) {
v[i][0] = 0;
for (int j = 1;j <= i; ++ j) {
v[i][j] = (v[i - 1][j - 1] + (1ll * j) * v[i - 1][j] % mod) % mod;
}
}
- 考虑答案的上下界!
- 做题的时候考虑考虑根号分治!
- 撤销 + 撤销 = 恢复!
- 考虑把所有的变量表示成统一的形式。
- \(\gcd(a, b) \leq \left\lfloor\dfrac{a}{2}\right\rfloor(b < a)\)。
- 考虑每一位 / 每一个质因子 / 每一个 ... 的独立性。
- 多考虑考虑 DP 等其他做法!
- 单位网络的最大流就是增广路的条数。

浙公网安备 33010602011771号