计数选讲

Posted by WrongAnswer_90's Blog on November 13, 2024

CF1943D2 Counting Is Fun (Hard Version)

充要条件是不存在 $1<i<n$ 使得 $a_i>a_{i-1}+a_{i+1}$。可以归纳证明。

对这个东西计数,暴力需要记两维,$f_{i,j,k}$ 表示 $i$ 上填了 $j$,$i-1$ 填了 $k$ 的方案数。

核心性质是,$i$ 和 $i-1$ 不能同时不合法。所以设 $f_{i,j}$ 表示 $i$ 上面填了 $j$ 并且 $[1,i-1]$ 都合法的方案数。转移是任意填一个数转移到 $f_{i+1}$。然后这样 $f_{i+1}$ 只是错误的把只有 $i$ 不合法的方案数加进去了,所以容斥一下,从 $f_{i-1,j}$ 也可以转移到 $f_{i+1}$。复杂度可以前缀和优化到 $\mathcal O(n^2)$。

CF1097G Vladislav and a Great Legend

唐氏题,设 $f_{i,j}$ 表示,$i$ 子树内选了一个连通块,连通块中选 $j$ 条边的方案数之和。转移是树形背包。

CF1392H ZS Shuffles Cards

很神秘的题。考虑期望抽到几张 joker,以及每抽到一张 joker 之前期望的抽到的有效牌数量。

答案就是期望轮数乘每轮期望抽牌数量(?)。证明:

\[\begin{aligned} &\sum E(\text{前 i-1 轮没有抽完})\times E(\text{第 i 轮期望抽牌数})\\ =&\sum E(\text{前 i-1 轮没有抽完})\times E(\text{一轮的期望抽牌数})\\ =&\sum E(\text{期望抽排轮数})\times E(\text{一轮的期望抽牌数})\\ \end{aligned}\]

一轮期望抽牌数可以拆贡献,每张牌的贡献是 $\frac{1}{m+1}$,答案是 $\frac n {m+1}+1$。

期望轮数考虑 min-max 容斥,枚举 $i$,选 $i$ 张牌作为关键牌,则期望最小值就是 $\frac{i+m}{i}$。

CF1988F Heartbeat

挺牛的。前缀最大值和后缀最大值显然可以通过枚举最大值的位置分开算。

设 $f_{i,j,k}$ 表示长度为 $i$ 的序列,有 $j$ 个前缀最大值,$k$ 个上升值的方案数。经过尝试,可以不断插入最小值。如果在开头则 $j,k$ 都加一,如果在两个上升值中间则 $j,k$ 都不变,如果在两个非上升值之间则 $k$ 加一,如果在结尾则 $j,k$ 也都不变。转移是 $\mathcal O(1)$ 的。

然后可以处理出 $l_{i,j}$ 表示长度为 $i$,$j$ 个上升值,此时前缀最大值的数量已经知道,所以可以乘进系数里。还有 $r_{i,j}$ 表示长度为 $i$,$j$ 个上升值的后缀最大值数量贡献和。

这样 $l,r$ 的乘法就是一个二维卷积。拉格朗日插值暴力就是 $\mathcal O(n^3)$,但是常数比较烂。可以考虑枚举 $l_{i,j}$ 和最终上升值的个数 $x$,贡献到一个 $v_{i,x-j}$。然后就是 $v_{i,a}$ 和 $r_{j,a}$ 在第一维上的一个一维卷积,复杂度 $\mathcal O(n^3)$。

CF1707D Partial Virtual Trees

二项式反演把真子集的限制去掉。假设一开始所有点都点亮,然后一个一个的熄灭。限制就是如果 $i$ 有两个不同子树的点都点亮,那 $i$ 就必须不能熄灭。

设 $f_{i,j}$ 表示 $i$ 子树内,考虑了前 $j$ 个时刻,此时仍然有被点亮的点的方案数。

分类讨论,如果 $i$ 还点亮着,可以枚举每个子树什么时候熄灭:

\[f_{i,j}\leftarrow \prod_{(i,u)}\sum_{0\leq k\leq j} f_{u,k}\]

转移前缀和优化。

如果 $i$ 熄灭了,枚举仅存的是哪个子树:

\[\begin{aligned} f_{i,j}&\leftarrow \sum_{(i,u)}f_{u,j}\prod_{(i,v),u\not=v}\sum_{0\leq k<j}f_{v,k}\\ s_{u,j}&=\sum_{k<j}f_{u,k} \end{aligned}\]

预处理 $s$ 的前后缀积即可辅助转移。

CF1667E Centroid Probabilities

设 $f_i$ 表示子树大小大于等于 $\frac{n+1}2$ 的方案数。

\[\begin{aligned} f_i&=\sum_{j=\frac{n+1}{2}}^{n-i+1}(i-1)\binom{n-i}{j-1}(j-1)!(n-j-1)!\\ &=\sum_{j=\frac{n+1}{2}}^{n-i+1}(i-1)\frac{(n-i)!}{(n-i-j+1)!}(n-j-1)!\\ &=(i-1)(n-i)!(i-2)!\sum_{j=\frac{n+1}{2}}^{n-i+1}\frac{(n-j-1)!}{(n-i-j+1)(i-2)!}\\ &=(i-1)!(n-i)!\sum_{j=\frac{n+1}{2}}^{n-i+1}\binom{n-j-1}{i-2}\\ &=(i-1)!(n-i)!\binom{\frac{n-1}{2}}{i-2}\\ \end{aligned}\]

CF708E Student’s Camp

$f_{i,l,r}$ 表示当前在第 $i$ 层,存在的墙是 $[l,r]$ 的概率,前缀和优化转移。

然后可以只对前缀和 DP,前缀和优化前缀和/tx/tx。

CF1842H Tenzing and Random Real Numbers

首先把所有数都减去 $\frac 1 2$,就变成了 $x_i+x_j\geq 0$ 或者 $x_i+x_j\leq 0$。

然后这个条件只和绝对值较大数的绝对值有关。把绝对值从大到小插入即可,最后除一个 $n!2^n$。

CF765E Byteland coins

先把 $m$ 进制转换,然后从高位向低位 DP,设 $f_{i,j}$ 表示考虑了高 $i$ 位,当前剩了 $j$,转移是转移到 $f_{i,k},k>j-b_i$,或者是到 $f_{i-1,j\times a_{i-1}+m_{i-1}}$。因为这样写不大好所以有点卡常。

CF1792F1 Graph Coloring (easy version)

图不可能都不联通。假设是红联通的,则蓝色形成了若干个连通块,连通块之间一定合法,只需要保证连通块内部合法。列出生成函数:

\[F(x)=x+e^{F(x)}-F(x)-1\]

有复合逆

\[G(x)=2x+1-e^x\]

套用拉格朗日反演:

\[[x^n]F(x)=\frac 1 n[x^{n-1}](\frac{x}{G(x)})^n\]

暴力多项式快速幂即可。

CF506E Mr. Kitayuta’s Gift

时代变了。

设 $f_{i,l,r}$ 表示填了 $i$ 个字母,左边走到了第 $l$ 个,右边走到了第 $r$ 个,转移 $\mathcal O(1)$。

然后求出前 $\mathcal O(m)$ 项之后对答案序列上个 BM 就能直接把线性递推式爆出来,然后再用 bostan-mori 递推一下就行了。

CF1810G The Maximum Prefix

枚举第 $k$ 位算答案。设 $f_{i,j}$ 表示当前在 $i$,最大前缀和是 $j$,初值 $f_{k+1,0}=1$,然后转移是向前面加数,答案是 $\sum f_{1,j}h_j$。对上述过程转置即可在 $\mathcal O(n^2)$ 的时间复杂度内求出答案。