杂项
序列统计
中位数
把 \(<k\) 的数看成 \(0\),\(\ge k\) 的数看成 \(1\),则中位数 \(\ge k\) 当且仅当新的中位数为 \(1\)。
长度为奇数的 \(01\) 序列的中位数等于众数。
绝对众数
出现次数 \(>\frac{n}2\) 的众数。
摩尔投票:如果保证序列存在绝对众数,那么扫一遍序列,维护 \((cnt,x)\),遇到 \(x\) 则 \(cnt\leftarrow cnt+1\),否则 \(cnt\leftarrow cnt-1\),如果 \(cnt=0\) 则用下一个数替换。
方差
\(\sigma^2=\frac{1}{n}\sum(x-\overline{x})^2=\frac{1}{n}\sum x^2-\overline{x}^2\)
???+ 证明
\[\frac{1}{n}\sum(x-\overline{x})^2=\frac{1}{n}(\sum x^2-2\sum x\cdot\overline{x}+\sum\overline{x}^2)=\frac{1}{n}\sum x^2-2\overline{x}^2+\overline{x}^2=\frac{1}{n}\sum x^2-\overline{x}^2
\]
???-
最大子段和
时刻谨记,最大子段和有很多做法,不要一条道走到黑。
扫描右端点
这是最基本的求整个序列最大子段和的办法
例:模拟赛题
线段树
线段树维护区间最大子段和,适合区间最大子段和
缩连续段
根据数 \(>0\) 还是 \(\le 0\) 缩连续段,容易知道缩完之后答案不变,适合简化序列结构。
例:QOJ8553 Exchanging Kubic
最长上升子序列
一般都是数形结合,有一些常见思考方式。
Dilworth 定理
把原序列划分为尽可能少的不交的下降子序列
则最长上升子序列(最长反链)与每个下降子序列(最小链覆盖)恰有一个交点。
一些 trick
正难则反
自不必多说,十分重要。
逆序考虑(时光倒流)
例题(有很多,随做随添加):AT_abc238_h [ABC238Ex] Removing People
网格划分
一般转为删一些边/留一些边,不从点的角度考虑。
例:
- 将一个矩形网格分为若干条链,每条链从一端只向上/向右走能到另一端,求方案数。发现本质上就是一条边与其左上、右下相邻的边不能同时保留,所以按反斜线(\(x+y=c\))考虑,则一条斜线上的边相邻两个不能同时选,方案数为斐波那契,每条斜线长度乘起来即可。
找规律
递归结构
一般递归结构(分形)总存在用 k-进制/位运算 表示的办法。
例:
- 组合数 \(\text{mod }2\):打出杨辉三角发现是分形,但其实你考虑 Lucas 定理,发现 \(\binom{n}{m}\equiv 1\mod{2}\) 当且仅当 \(m\subseteq n\)。
- CF2180H2 Bug Is Feature (Conditional Version)

浙公网安备 33010602011771号