一些套路的备忘笔记

杂项

  1. baka's trick:尺取法可以不用删除做到线性,前提是合并两个连续段答案的复杂度比较低。

  2. 指定某两个结构的元素不交,可以考虑随机黑白染色,当结构比较简单,元素个数较小时正确率有保证。

  3. 对于一些限制很奇怪的选物品题目可以尝试定义一些 \(01\) 变量转成规划问题,可以用无穷大的代价描述限制。

  4. 树上连通块当然是点分治钦定一个根最好做。点分治不止可以用于路径。

  5. xorshift 32 参数: 13 17 5;xorshift 64 参数:13 7 17

  6. 区间没有相交只有包含排除,有时候暗示着单调栈。

  7. 每次随机一条边,如果加入不产生环就加入,用这样的方式随机产生的树的深度是 \(\Theta(n^{\frac13})\),且深度和高度的乘积之和是 \(\Theta(n^{\frac12})\)

组合计数类

  1. 生成一个结构,每次在原先的基础上进行一些转化得到新的结构。当你发现依次递推非常困难的时候可以考虑从开头插入,考虑第一步对后面生成的结构的影响。这点不只适用于组合计数。

  2. 对于 \(\sum\limits_{k=1}^{m}{x_k} = n\) 的限制,在任何解中,本质不同的 \(x_k\) 的数目是 \(\mathrm O(\sqrt{n})\)

  3. 一道题目涉及到异或和的时候想想Kummer定理,\(\binom{n}{k}\ mod\ 2 = 1\iff k\subseteq n\),这是Lucas定理的一个直接推论。

  4. 整除可以单位根反演。

  5. 神秘容斥:\(\sum\limits_{i=0}^{k}\binom{k}{i}(m-1)^i = m^k\)

数论类

  1. 处理取模:\(x \bmod p = x - p\lfloor\frac{x}{p}\rfloor\)

  2. 处理 \(-1\) 的幂:\((-1) ^ a = 1 - 2(a \bmod 2) = 1 - 2(a - 2\lfloor \frac{a}{2}\rfloor)\),从而把 \(a\) 从指数上拿下来。

  3. 处理求和式:交换求和顺序,如果不能交换,考虑凭空求和:\(x = \sum\limits_{0}^{x-1}1\)

  4. 处理有关上下取整的限制:\(x\le \lfloor y\rfloor\iff x\le y\)\(x \ge\lceil y\rceil\iff x\ge y\),反之亦然,可以这样把取整符号里的除法、根号等去掉然后再把取整加回去。

  5. \([x = 1]\) 考虑凭空莫反转化成 \(\sum\limits_{d | x}\mu(d)\)\([\gcd(x, y) = d]\) 考虑枚举 \(d\),使得 \(Xd = x, Yd = y\),然后变成 \([\gcd(X, Y) = 1]\),用凭空莫反。

  6. 某个数与另一个数互质,可以考虑转化为模另一个数的所有质因子都不为0。当然也可以考虑莫反,这两者其实差不多。

结论类

  1. 考虑一个序列a,满足它的和为1,则它的所有循环同构串互不相同,且其中恰好有一个满足其所有部分和为正。(Raney引理,出自《混凝土数学》)

  2. 两维值域在 \([1, x]\cap \mathbb Z\) 的凸包大小是 \(\mathrm O(x^\frac23)\)

  3. 总共有 \(n\) 个点的点集,凸包大小是 \(\Theta(\log n)\) 级别。事实上这是基于随机排列它的前缀最大值序列值个数期望是 \(\Theta(\log n)\)

构造类

  1. 减少步数可以考虑 \(\text{DP}\) 求最小步数然后反过来构造。

多项式

  1. \(a\)\(2^k\) 的逆元,可以构造 \(F(x) = ax - 1\),求它在 \(\bmod x^k\) 意义下的根,其中 \(x\)\(\mathbb Z_2\) 中。那么可以基于牛顿迭代做到 \(\Theta(\log k)\)
posted @ 2023-02-12 11:09  kyEEcccccc  阅读(391)  评论(0编辑  收藏  举报