未分类

一个二项式式子的推导 兼 CF1716F – Bags with Balls 题解与思路重现

Educational Codeforces Round 133 F – Bags with Balls

题目中存在高次项的和。则我们分别计算有 p=1,2,,np=1,2,\cdots,n 个袋子选择奇数号球时的方案。对于选择了奇数号球的袋子,每个有 m2\lceil \frac{m}{2} \rceil 种选择;偶数的则有 m2\lfloor \frac{m}{2} \rfloor 种。因此答案为: p=0npk(np)m2pm2np \sum_{p=0}^{n}p^k\dbinom{n}{p}\Big\lceil\frac{m}{2}\Big\rceil^p\Big\lfloor \frac{m}{2} \Big\rfloor^{n-p}

由于 n109n\leq 10^9,这式子看起来非常棘手。但我们注意到,有 k2000k\leq 2000,这提示我们或许应该转变对答案的贡献方式:从高次幂入手,找到 O(polyk)\mathrm{O}(\operatorname{poly} k) 而非 O(n)\mathrm{O}(n) 的算法。

引理

有非负整数 x,k,nx, k,n,则 p=0n(np)xppk=t=1kntxt(x+1)ntS2(k,t) \sum_{p=0}^{n} \dbinom{n}{p}x^pp^k=\sum_{t=1}^{k}n^{\underline{t}}x^t(x+1)^{n-t}\operatorname{S_2}(k,t)

其中 nt=i=0t1nin^{\underline{t}}=\prod_{i=0}^{t-1}n-i 表示 nntt 次下降幂,S2(k,t)\operatorname{S_2}(k,t) 表示第二类斯特林数。

证明

对于 k=0k=0,该式子的解是平凡的:p=0n(np)xp\sum_{p=0}^{n}\dbinom{n}{p}x^p(x+1)n(x+1)^n 的展开形式。

对于 k=1k=1,我们考虑拆分二项式系数: p=0n(np)pxp=p=0nn!(np)!p!pxp=p=0nn(n1)!(np)!(p1)!xp=p=0nn(n1)![(n1)(p1)]!(p1)!xp=p=0nnx(n1p1)xp1 (1)=nx(x+1)n1\begin{aligned} & \sum_{p=0}^{n}\dbinom{n}{p}px^p\\ =& \sum_{p=0}^{n}\dfrac{n!}{(n-p)!{\color{blue}p!}}{\color{blue}p}x^p\\ =& \sum_{p=0}^{n}\dfrac{n\cdot (n-1)!}{{\color{red}(n-p)!}{\color{blue}(p-1)!}}x^p\\ =& \sum_{p=0}^{n}n\dfrac{(n-1)!}{{\color{red}[(n-1)-(p-1)]!}(p-1)!}x^p\\ =& \sum_{p=0}^{n}nx\dbinom{n-1}{p-1}x^{p-1} & (1)\\ =& nx(x+1)^{n-1} \end{aligned}

对于 k=2k=2,我们故技重施: p=0n(np)p2xp=p=0n(np)pxpp=p=0nnx(n1p1)xp1p(由式(1)得)=p=0nnx(n1p1)xp1[1+(p1)]=p=0nnx(n1p1)xp1+n(n1)x2(n2p2)xp2=nx(x+1)n1+n(n1)x2(x+1)n2\begin{aligned} & \sum_{p=0}^{n}\dbinom{n}{p}p^2x^p\\ =& \sum_{p=0}^{n}\dbinom{n}{p}px^p\cdot p\\ =& \sum_{p=0}^{n}nx\dbinom{n-1}{p-1}x^{p-1}p & \text{(由式(1)得)}\\ =& \sum_{p=0}^{n}{\color{green}nx\dbinom{n-1}{p-1}x^{p-1}}[1+\underline{\color{green}(p-1)}]\\ =& \sum_{p=0}^{n}nx\dbinom{n-1}{p-1}x^{p-1}+{\color{green}n(n-1)x^2\dbinom{n-2}{p-2}x^{p-2}}\\ =& nx(x+1)^{n-1}+n(n-1)x^2(x+1)^{n-2} \end{aligned}

情况变得明朗了。可以发现,kk 每自增 11,也即将原式乘上因数 pp,我们都会将上一代式子的所有二项式系数再度拆分,并且结果可以表示成 kk 个特定二项式系数、nn 的下降幂和 xx 的高次幂的乘积式之和。同时,更一般地,有(ntpt)p=t(ntpt)+(nt)(nt1pt1)(2)\dbinom{n-t}{p-t}p={\color{red}t}\dbinom{n-t}{p-t}+{\color{blue}(n-t)}\dbinom{n-t-1}{p-t-1}\quad (2),这就是 nn 的下降幂产生的原因。

现在使用数学归纳法:假如对于 k=k0k=k_0,有 p=0n(np)xppk0=t=1k0ck0,tntxt(x+1)nt(ntpt)\sum_{p=0}^{n} \dbinom{n}{p}x^pp^{k_0}=\sum_{t=1}^{k_0}c_{k_0,t}n^{\underline{t}}x^{t}(x+1)^{n-t}\dbinom{n-t}{p-t}成立(ck,tc_{k,t} 为给定的 k,tk,t 下该项的正整数系数,目前还没有发现其内在联系),那么对于 k=k0+1k=k_0+1,有 p=0n(np)xppk0+1=t=1k0ck0,tntxt(x+1)nt(ntpt)p=t=1k0ck0,t[ntxt(x+1)nt(ntpt)t+(nt(nt))xt+1(x+1)nt1(n(t+1)p(t+1))](由式(2)得)=t=1k0+1(tck0,t+ck0,t1)ntxt(x+1)nt(ntpt)\begin{aligned} &\sum_{p=0}^{n} \dbinom{n}{p}x^pp^{k_0+1}\\ =& \sum_{t=1}^{k_0}c_{k_0,t}n^{\underline{t}}x^{t}(x+1)^{n-t}\dbinom{n-t}{p-t}\cdot p\\ =& \sum_{t=1}^{k_0}c_{k_0,t}\left[n^{\underline{t}}x^{t}(x+1)^{n-t}\dbinom{n-t}{p-t}{\color{red}t}+\left(n^{\underline{t}}{\color{blue}(n-t)}\right)x^{t+1}(x+1)^{n-t-1}\dbinom{n-(t+1)}{p-(t+1)}\right] &\text{(由式(2)得)}\\ =& \sum_{t=1}^{k_0+1}({\color{red}t}c_{k_0,t}+c_{k_0,t-1})n^{\underline{t}}x^{t}(x+1)^{n-t}\dbinom{n-t}{p-t} \end{aligned}

ck0+1,t=ck0,tt+ck0,t1c_{k_0+1,t}=c_{k_0,t}\cdot {\color{red}t}+c_{k_0,t-1},则对于 k=k0+1k=k_0+1 也成立。

cc 的转移方式,不正是第二类斯特林数的递推式么?!同时具有 c1,1=1c_{1,1}=1。故原式成立。\quad\square

现在回到本题。我们令 x=m2m2x=\dfrac{\big\lceil\frac{m}{2}\big\rceil}{\big\lfloor\frac{m}{2}\big\rfloor},则答案为 m2nt=1kntxt(x+1)ntS2(k,t)\Big\lfloor \frac{m}{2} \Big\rfloor^n\sum_{t=1}^{k}n^{\underline{t}}x^t(x+1)^{n-t}\operatorname{S_2}(k,t)

O(kmax2)\mathrm{O}({k_{\operatorname{max}}}^2) 的时间计算好第二类斯特林数,预处理好逆元和幂次等,单次询问时间复杂度 O(k)\mathrm{O}(k)

Submission #167165456

  • 2022年8月8日