专栏文章

小学奥数题

算法·理论参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipujkwr
此快照首次捕获于
2025/12/03 18:10
3 个月前
此快照最后确认于
2025/12/03 18:10
3 个月前
查看原文
背景:本人在模拟赛中遇到了形如 i=1C(AiB)i\sum\limits_{i=1}^C\binom{A-i}{B}i 的式子,本以为不可做,后来发现这个东西可以 O(1)O(1) 求,由于网上没见过这类式子的求法,所以小小总结了一下。
前置知识:
(nm)=(n+1m+1)(nm+1)\binom{n}{m}=\binom{n+1}{m+1}-\binom{n}{m+1}
也就是组合数递推式换了一下形式。
求:i=0C(AiB)\sum\limits_{i=0}^C\binom{A-i}{B}
i=0C(AiB)\sum\limits_{i=0}^C\binom{A-i}{B}
=i=0C[(Ai+1B+1)(AiB+1)]=\sum\limits_{i=0}^C\left[\binom{A-i+1}{B+1}-\binom{A-i}{B+1}\right]
=i=0C(Ai+1B+1)i=0C(AiB+1)=\sum\limits_{i=0}^C\binom{A-i+1}{B+1}-\sum\limits_{i=0}^C\binom{A-i}{B+1}
=i=1C1(AiB+1)i=0C(AiB+1)=\sum\limits_{i=-1}^{C-1}\binom{A-i}{B+1}-\sum\limits_{i=0}^C\binom{A-i}{B+1}
=(A+1B+1)(ACB+1)=\binom{A+1}{B+1}-\binom{A-C}{B+1}
扩展:求 i=1C(AiB)i\sum\limits_{i=1}^C\binom{A-i}{B}i
i=1C(AiB)i\sum\limits_{i=1}^C\binom{A-i}{B}i
i=1C[(Ai+1B+1)i(AiB+1)i]\sum\limits_{i=1}^C\left[\binom{A-i+1}{B+1}i-\binom{A-i}{B+1}i\right]
=i=1C(Ai+1B+1)ii=1C(AiB+1)i=\sum\limits_{i=1}^C\binom{A-i+1}{B+1}i-\sum\limits_{i=1}^C\binom{A-i}{B+1}i
=i=0C1(AiB+1)(i+1)i=1C(AiB+1)i=\sum\limits_{i=0}^{C-1}\binom{A-i}{B+1}(i+1)-\sum\limits_{i=1}^C\binom{A-i}{B+1}i
=i=0C1(AiB+1)+i=0C1(AiB+1)ii=1C(AiB+1)i=\sum\limits_{i=0}^{C-1}\binom{A-i}{B+1}+\sum\limits_{i=0}^{C-1}\binom{A-i}{B+1}i-\sum\limits_{i=1}^C\binom{A-i}{B+1}i
=i=0C1(AiB+1)(ACB+1)C=\sum\limits_{i=0}^{C-1}\binom{A-i}{B+1}-\binom{A-C}{B+1}C
=(A+1B+2)(AC+1B+2)(ACB+1)C=\binom{A+1}{B+2}-\binom{A-C+1}{B+2}-\binom{A-C}{B+1}C
再扩展:求 i=1C(AiB)ik,k>0\sum\limits_{i=1}^C\binom{A-i}{B}i^k,k>0
fx,k=i=1C(AiB+x)ikf_{x,k}=\sum\limits_{i=1}^C\binom{A-i}{B+x}i^k
i=1C(AiB+x)ik\sum\limits_{i=1}^C\binom{A-i}{B+x}i^k
=i=1C[(Ai+1B+x+1)ik(AiB+x+1)ik]=\sum\limits_{i=1}^C\left[\binom{A-i+1}{B+x+1}i^k-\binom{A-i}{B+x+1}i^k\right]
=i=1C(Ai+1B+x+1)iki=1C(AiB+x+1)ik=\sum\limits_{i=1}^C\binom{A-i+1}{B+x+1}i^k-\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^k
=i=0C1(AiB+x+1)(i+1)ki=1C(AiB+x+1)ik=\sum\limits_{i=0}^{C-1}\binom{A-i}{B+x+1}(i+1)^k-\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^k
=(ACB+x+1)(C+1)k+i=0C(AiB+x+1)(i+1)ki=1C(AiB+x+1)ik=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{i=0}^{C}\binom{A-i}{B+x+1}(i+1)^k-\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^k
=(ACB+x+1)(C+1)k+i=0C[(AiB+x+1)j=0k(kj)ij]i=1C(AiB+x+1)ik=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{i=0}^C\left[\binom{A-i}{B+x+1}\sum\limits_{j=0}^k\binom{k}{j}i^j\right]-\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^k
=(ACB+x+1)(C+1)k+j=0k[(kj)i=0C(AiB+x+1)ij]i=1C(AiB+x+1)ik=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{j=0}^k\left[\binom{k}{j}\sum\limits_{i=0}^C\binom{A-i}{B+x+1}i^j\right]-\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^k
=(ACB+x+1)(C+1)k+j=0k1[(kj)i=0C(AiB+x+1)ij]+i=0C(AiB+x+1)iki=1C(AiB+x+1)ik=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{j=0}^{k-1}\left[\binom{k}{j}\sum\limits_{i=0}^C\binom{A-i}{B+x+1}i^j\right]+\sum\limits_{i=0}^C\binom{A-i}{B+x+1}i^k-\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^k
=(ACB+x+1)(C+1)k+j=0k1[(kj)i=0C(AiB+x+1)ij]=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{j=0}^{k-1}\left[\binom{k}{j}\sum\limits_{i=0}^C\binom{A-i}{B+x+1}i^j\right]
=(ACB+x+1)(C+1)k+j=1k1[(kj)i=1C(AiB+x+1)ij]+i=0C(AiB+x+1)=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{j=1}^{k-1}\left[\binom{k}{j}\sum\limits_{i=1}^C\binom{A-i}{B+x+1}i^j\right]+\sum\limits_{i=0}^C\binom{A-i}{B+x+1}
=(ACB+x+1)(C+1)k+j=1k1(kj)fx+1,j+i=0C(AiB+x+1)=-\binom{A-C}{B+x+1}(C+1)^k+\sum\limits_{j=1}^{k-1}\binom{k}{j}f_{x+1,j}+\sum\limits_{i=0}^C\binom{A-i}{B+x+1}
后面的式子在前文已经解决,前面的式子可以直接求,中间的式子可以递推,有用的状态是 O(k2)O(k^2) 的,所以可以 O(k3)O(k^3) 递推。用多项式可以优化到 O(k2logk)O(k^2\log k)。下文会有一个更好的做法。
再再再扩展:求 i=1C(AiB)(ik),k>1\sum\limits_{i=1}^C\binom{A-i}{B}\binom{i}{k},k>1
i=1C(AiB)(ik)\sum\limits_{i=1}^C\binom{A-i}{B}\binom{i}{k}
=i=1C[(Ai+1B+1)(ik)(AiB+1)(ik)]=\sum\limits_{i=1}^C\left[\binom{A-i+1}{B+1}\binom{i}{k}-\binom{A-i}{B+1}\binom ik\right]
=i=1C(Ai+1B+1)(ik)i=1C(AiB+1)(ik)=\sum\limits_{i=1}^C\binom{A-i+1}{B+1}\binom{i}{k}-\sum\limits_{i=1}^C\binom{A-i}{B+1}\binom ik
=i=0C(AiB+1)(i+1k)i=1C(AiB+1)(ik)=\sum\limits_{i=0}^C\binom{A-i}{B+1}\binom{i+1}{k}-\sum\limits_{i=1}^C\binom{A-i}{B+1}\binom ik
=i=0C1[(AiB+1)(ik)+(AiB+1)(ik1)]i=1C(AiB+1)(ik)=\sum\limits_{i=0}^{C-1}\left[\binom{A-i}{B+1}\binom{i}{k}+\binom{A-i}{B+1}\binom{i}{k-1}\right]-\sum\limits_{i=1}^C\binom{A-i}{B+1}\binom ik
=i=0C1(AiB+1)(ik1)+i=0C1(AiB+1)(ik)i=1C(AiB+1)(ik)=\sum\limits_{i=0}^{C-1}\binom{A-i}{B+1}\binom{i}{k-1}+\sum\limits_{i=0}^{C-1}\binom{A-i}{B+1}\binom{i}{k}-\sum\limits_{i=1}^C\binom{A-i}{B+1}\binom ik
=i=1C1(AiB+1)(ik1)(ACB+1)(Ck)=\sum\limits_{i=1}^{C-1}\binom{A-i}{B+1}\binom{i}{k-1}-\binom{A-C}{B+1}\binom Ck
可以直接 O(k)O(k) 递推。
i=1C(AiB)ik\sum\limits_{i=1}^C\binom{A-i}{B}i^k 的另一种求法。
前置知识:斯特林数反演。
i=1C(AiB)ik\sum\limits_{i=1}^C\binom{A-i}{B}i^k
=i=1C(AiB)j=0k{kj}(ij)=\sum\limits_{i=1}^C\binom{A-i}{B}\sum\limits_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\binom{i}{j}
=j=0k{kj}i=1C(AiB)(ij)=\sum\limits_{j=0}^k\begin{Bmatrix}k\\j\end{Bmatrix}\sum\limits_{i=1}^C\binom{A-i}{B}\binom{i}{j}
右边的式子在上文可以 O(k)O(k),总复杂度 O(k2)O(k^2)
以上是本人瞎胡的,如果有错或有更好的做法,欢迎提出。

评论

0 条评论,欢迎与作者交流。

正在加载评论...