CF1747E – List Generation – 题解

这道破题拖了我整整一天。

代数推导

转化为容斥模型

题目所给限制可以表述为,aabb 均为单调不降的序列,长度相等(记为 kk),且 a1=0,ak=n,b1=0,bk=m,i[2,k],ai=ai1bi=bi1a_1=0,a_k=n,b_1=0,b_k=m,\nexists i\in[2,k],a_i=a_{i-1}\land b_i=b_{i-1}

考虑差分序列 ai=aiai1(i[2,k]){a_i}’=a_i-a_{i-1}\quad(i\in[2,k])bi{b_i}’ 同理,它与原序列形成双射。于是不存在 ai=bi=0{a_i}’={b_i}’=0 的差分序列合法。考虑 i=2kai=n\sum_{i=2}^{k}{a_i}’=n,也就是和为 nnk1k-1 元线性方程组的一组非负整数解;bb’ 同理。容易计算“钦定至少有 cc 个位置不合法”的方案数——利用容斥原理即可得到长为 kk 的合法序列对个数为 c=0k2(k1c)(n+(k1)1c(k1)1c)(m+(k1)1c(k1)1c)(1)c\sum_{c=0}^{k-2}\binom{k-1}{c}\binom{n+(k-1)-1-c}{(k-1)-1-c}\binom{m+(k-1)-1-c}{(k-1)-1-c}(-1)^c 答案累加上式结果 ×k\times k

恒等变换

答案=k=2n+m+1kc=0k2(k1k1c)(n+k2ck2c)(m+k2ck2c)(1)c=k=2n+m+1kc=0k2(k1c+1)(n+cc)(m+cc)(1)k2c(倒序求和)=c=0n+m1(n+cc)(m+cc)(1)ck=c+2n+m+1(1)kk(k1c+1)=c=0n+m1(n+cc)(m+cc)(1)ck=c+2n+m+1(1)kk!(c+1)!(kc2)!=c=0n+m1(n+cc)(m+cc)(1)c(c+2)k=c+2n+m+1(1)k(kc+2)\begin{aligned} \text{答案}&=\sum_{k=2}^{n+m+1}k\sum_{c=0}^{k-2}\binom{k-1}{k-1-c}\binom{n+k-2-c}{k-2-c}\binom{m+k-2-c}{k-2-c}(-1)^c\\ &=\sum_{k=2}^{n+m+1}k\sum_{c=0}^{k-2}\binom{k-1}{c+1}\binom{n+c}{c}\binom{m+c}{c}(-1)^{k-2-c}&\text{(倒序求和)}\\ &=\sum_{c=0}^{n+m-1}\binom{n+c}{c}\binom{m+c}{c}(-1)^c\sum_{k=c+2}^{n+m+1}(-1)^kk\binom{k-1}{c+1}\\ &=\sum_{c=0}^{n+m-1}\binom{n+c}{c}\binom{m+c}{c}(-1)^c\sum_{k=c+2}^{n+m+1}(-1)^k\frac{k!}{(c+1)!(k-c-2)!}\\ &=\sum_{c=0}^{n+m-1}\binom{n+c}{c}\binom{m+c}{c}(-1)^c(c+2)\sum_{k=c+2}^{n+m+1}(-1)^k\binom{k}{c+2}\\ \end{aligned}

递推转移

二项式系数矩阵。黑字表示 h(c+1)h(c+1) 之系数,红字表示 h(c+1)h(c+1) 的等价系数(由递推公式得),蓝字为 h(c)h(c) 之系数。

 

h(c)=k=cn+m+1(1)k(kc)h(c)=\sum_{k=c}^{n+m+1}(-1)^k\binom{k}{c}。我们难以找到简便的通项公式。尝试将其二项式系数拆分后递推计算。有 h(c+1)=k=c+1n+m+1(kc+1)(1)k=k=cn+m(k+1c+1)(1)k=k=cn+m((kc+1)+(kc))(1)k=(h(c+1)(n+m+1c+1)(1)n+m+1+h(c)(n+m+1c)(1)n+m+1)\begin{aligned} h(c+1)&=\sum_{k=c+1}^{n+m+1}\binom{k}{c+1}(-1)^k\\ &=-\sum_{k=c}^{n+m}\binom{k+1}{c+1}(-1)^k\\ &=-\sum_{k=c}^{n+m}\left({\color{red}\binom{k}{c+1}}+{\color{blue}\binom{k}{c}}\right)(-1)^k\\ &=-\left({\color{red}h(c+1)-\binom{n+m+1}{c+1}(-1)^{n+m+1}}+{\color{blue}h(c)-\binom{n+m+1}{c}(-1)^{n+m+1}}\right) \end{aligned} 移项整理得到 h(c)=(n+m+2c+1)(1)n+m+12h(c+1)h(c)=\binom{n+m+2}{c+1}(-1)^{n+m+1}-2h(c+1) 故而答案为 c=0n+m1(n+cc)(m+cc)(1)c(c+2)h(c+2)\sum_{c=0}^{n+m-1}\binom{n+c}{c}\binom{m+c}{c}(-1)^c(c+2)h(c+2)

时间复杂度 O(n+m)\operatorname{O}(n+m),组合数应当预处理到 2(n+m)2(n+m) 级别。

Bonus: 无意义过程

wk,c=(n+k2ck2c)(m+k2ck2c)(1)cf(k,Δ)=c=0k2(k1c+Δ)wk,c\begin{aligned} &w_{k,c}=\binom{n+k-2-c}{k-2-c}\binom{m+k-2-c}{k-2-c}(-1)^c\\&f(k,\Delta)=\sum_{c=0}^{k-2}\binom{k-1}{c+\Delta}w_{k,c} \end{aligned} 经过与上文相仿的推导可以发现,有 f(k,Δ)=wk,0(k1Δ)f(k1,Δ)f(k1,Δ+1)f(k,\Delta)=w_{k,0}\binom{k-1}{\Delta}-f(k-1,\Delta)-f(k-1,\Delta+1)。我们的目标是分别求出 k=2,,n+m+1k=2,\cdots,n+m+1f(k,0)f(k,0)。考察每一个 wk0,0(k01Δ0)w_{k_0,0}\binom{k_0-1}{\Delta_0}f(k,0)(kk0)f(k,0)\quad(k\geq k_0) 的贡献。上式除首项以外,递推形式与二项式系数相同(本来就是通过对原式拆系数得到的),因此 wk0,0(k01Δ0)w_{k_0,0}\binom{k_0-1}{\Delta_0}(1)kk0(kk0Δ0)(-1)^{k-k_0}\binom{k-k_0}{\Delta_0} 的系数贡献到 f(k,0)f(k,0) 中。

于是考察单个系数对答案的最终贡献。有 wk0,0w_{k_0,0} 的贡献为 wk0,0Δ0=0k01(k01Δ0)k=k0n+m+1(kk0Δ0)(1)kk0k=wk0,0k=k0n+m+1(Δ0=0k01(k01Δ0)(kk0Δ0))(1)kk0k=wk0,0k=k0n+m+1(k1k01)(1)kk0k(范德蒙德卷积)\begin{aligned} &w_{k_0,0}\sum_{\Delta_0=0}^{k_0-1}\binom{k_0-1}{\Delta_0}\sum_{k=k_0}^{n+m+1}\binom{k-k_0}{\Delta_0}(-1)^{k-k_0}k\\ =&w_{k_0,0}\sum_{k=k_0}^{n+m+1}\left(\sum_{\Delta_0=0}^{k_0-1}\binom{k_0-1}{\Delta_0}\binom{k-k_0}{\Delta_0}\right)(-1)^{k-k_0}k\\ =&w_{k_0,0}\sum_{k=k_0}^{n+m+1}\binom{k-1}{k_0-1}(-1)^{k-k_0}k&\href{https://oi-wiki.org/math/combinatorics/vandermonde-convolution/#推论-4-及证明}{(范德蒙德卷积)} \end{aligned}

然后就殊途同归了。

组合意义

解一 – 构造标识符数组

解二 – 网格图合法路径关键点计数

  • 2022年12月1日