杂项

序列统计

中位数

把 \(<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

网格划分

一般转为删一些边/留一些边,不从点的角度考虑。

例:

  1. 将一个矩形网格分为若干条链,每条链从一端只向上/向右走能到另一端,求方案数。发现本质上就是一条边与其左上、右下相邻的边不能同时保留,所以按反斜线(\(x+y=c\))考虑,则一条斜线上的边相邻两个不能同时选,方案数为斐波那契,每条斜线长度乘起来即可。

找规律

递归结构

一般递归结构(分形)总存在用 k-进制/位运算 表示的办法。

例:

  1. 组合数 \(\text{mod }2\):打出杨辉三角发现是分形,但其实你考虑 Lucas 定理,发现 \(\binom{n}{m}\equiv 1\mod{2}\) 当且仅当 \(m\subseteq n\)。
  2. CF2180H2 Bug Is Feature (Conditional Version)
posted @ 2026-02-25 09:14  SmpaelFx  阅读(17)  评论(0)    收藏  举报