计数(1):刻画
第一篇计数应该讲点比较具有普适性的东西,所以说这不仅仅是计数。
常见 trick:
- 首先,找一个东西刻画结构。
- 如图,树等,在结构上进行计数。
- 特别的刻画方法有笛卡尔树,直方图等。
- 当然有的时候在结构刻画上没有什么可以发掘的地方,没必要“这个东西结构刻画不够简洁所以必须要找到一个好的结构”
- 其次,刻画合法条件。
- 结构是为了辅助这一条的。
- 特别的,如果合法条件难以满足,我们可以考虑钦定部分满足/满足部分/部分不满足/不满足部分,其它任意,然后任意。
接下来是一些关于思路上的东西
-
难以刻画合法条件?先从一个构造性问题出发,这样可能能够找到尽可能简洁的方式确定合法条件。
-
直接做很难?正难则反 CF1556F
-
好难刻画?多规定点东西!多规定点,直到可以容易的刻画,然后再一点一点脱掉 P10004
- 比如 P10004,注意到直接刻画真的太难了,所以我们强制规定正排列逆排列的连续段(虽然实际上我们不可能确定出来),此时我们发现容易刻画,并且脱掉“强制规定”的枚举也容易刻画了。
-
好难刻画?少规定点东西!别考虑太细致的过程,从宏观处着手,比如从起点和终点。P7736
接下来是常用刻画技巧
-
对于直方图可以刻画的,将 \(\le x\) 和 \(>x\) 分别看作 \(0, 1\) 再计数。也可以看作一种差分 agc049_e P12251
-
将邻接矩阵看作图再做打算,nowcoder 矩阵与排列
-
对于中位数,令小于 \(x\) 为 \(-1\),大于等于 \(x\) 的为 \(1\),那么找到与 \(0\) 的后继就是找到了中位数。P2839
-
将序列看作一棵树,利用一点点减边容斥的想法,\(点数-边数=联通块数\)。P5825
-
时刻不忘 \(点数-边数=联通块数\) BZOJ 5473
-
树的直径中点重合,所以对于树直径计数可以从中点所在的联通块考虑。 XYD19495.热异常/牛客 Haitang and diameter
-
LGV 引理多考虑起点和终点的关系。P7736 被板题击杀可还行,实在是怠惰。
-
增加维度。比如把时间看作一个维度。如 AT_abc216_h AT_agc013_d(这题有点忘了)
接下来是一些关于式子的技巧,更加细致吧
-
毫无头绪?把式子先写出来。
-
把式子未知项和常数项分离可能有奇效。P8329
-
必要的时候考虑一下单步容斥,真的挺牛的。P13275
-
BEST 定理中直接记录树的形态而不是记录 Laplace 矩阵。 nowcoder 矩阵与排列(双杀
-
式子中出现了补集相关元素,那么求全集后除掉集合内元素。P4643 P3317
-
如果出现 \(f_i = \sum f_{i - j - 1}f_j\) 状物
这题我会,ogf 一下可以考虑根据括号序列给这个式子做一个组合意义。uoj424
一些特定的结构
括号序列
- 将左括号看作 \(+1\),右括号看作 \(-1\)。要求是前缀和大小大于等于 \(0\),最后等于 \(0\)。
- 将左括号右括号增减看成折线。
- 将括号序列上树。
冒泡排序
冒泡排序有一种我见了一万次但是每次我都不会的美感。
- 二分 \(01\) 的技巧:正向排序相当于将最左边的 \(1\) 扔到了最右边,倒过来相当于将最右边的 \(0\) 扔到了最左边。
- 直接刻画的技巧:
- 增量刻画:冒泡排序到 \(i\) 这个位置保留的是

浙公网安备 33010602011771号