首页 > 其他分享 >binomial sum

binomial sum

时间:2023-04-30 10:44:37浏览次数:45  
标签:begin end sum binomial mathcal binom aligned

前情提要:模拟赛就要出三个大模拟,字面意思上的模拟赛。所以发动了魔法卡献祭了模拟赛来写这个东西。

我刚改邪归正准备好好敲暴力你就给我来这个?建议出题人自己写。

感觉写博逐渐倾向于告诉自己“我学了这个东西但是以后可能会忘所以记下来”这种心态。算了反正模拟赛狗都不打。

一开始看 EI 的原文,看的一知半解。然后看 Prean 老师的洛谷日报,整不会了。然后找了几篇题解,似乎大概知道了这是个什么过程。但是并不明白这个名字是什么意思。

感觉直接上例题来解释这个过程是如何运行的会更好理解一点。

以下所有题默认 \(k\le n\)。

CF932E Team Work

题意:求

\[\sum_{i=1}^n\binom nii^k \]

首先我们会 \(O(k\log k)\),直接把后边的 \(i^k\) 爆拆斯特林数随便推一下就成。不过这不重要。

我们的技术首先把这个式子变成某个生成函数的 \(k\) 项的形式。

\[\begin{aligned} &\sum_{i=1}^n\binom nii^k\\ =&\sum_{i=0}^n\binom ni[x^k]e^{ix}\\ =&[x^k](e^x+1)^n \end{aligned} \]

设 \(F(x)=(x+1)^n\),则答案就是 \([x^k]F(e^x)\)。Binomial sum 的方法通过去除函数的常数项达到只需要求得 \(x^{k+1}\) 以内的项即可得到答案的效果。\(e^x\) 的常数项为 \(1\),则我们设

\[\mathcal F(x+1)=F(x+1)\bmod x^{k+1} \]

则我们断言答案是 \([x^k]\mathcal F(x)\)。证明考虑泰勒展开的 \(k\) 次项以后都是不需要的,详见 EI 原文。

那么我们此时列出 \(F(x)\) 满足的微分方程:

\[(x+1)F'(x)-nF(x)=0 \]

那么将 \(x\) 替换为 \(x+1\),显然有

\[(x+1+1)F'(x+1)-nF(x+1)=0 \]

此时我们将 \(F(x+1)\) 替换为 \(\mathcal F(x+1)\)。然而此时不能随意替换。注意到原本的 \((x+1+1)F'(x+1)\) 由于求导,在 \([x^k]\) 处有 \(x^k,x^{k+1}\) 两项的贡献。而在 \(x^{k+1}\) 处截取之后没有了 \(x^{k+1}\) 项的贡献,所以我们需要把截取后的 \(x^k\) 项手算出来。根据 \(F(x)=(x+1)^n\) 把项拆出来,简单手算一下可以得到:

\[(x+1+1)\mathcal F'(x+1)-n\mathcal F(x+1)=(k-n)x^k[x^k]F(x+1) \]

注意等式右边是 \(F\)。然后带入 \(x\leftarrow x-1\):

\[(x+1)\mathcal F'(x)-n\mathcal F(x)=(k-n)(x-1)^k[x^k]F(x+1) \]

右边是个系数所以仍然是 \(F(x+1)\)。

算一下右边:

\[\begin{aligned} &(k-n)(x-1)^k[x^k]F(x+1)\\ =&(k-n)\binom nk2^{n-k}\sum_{i=0}^k\binom kix^i(-1)^{k-i} \end{aligned} \]

于是可以递推。具体列递推式:

\[(i+1)f_{i+1}+if_i-nf_i=(k-n)\binom nk2^{n-k}\binom ki(-1)^{k-i} \]

一个比较笨的方法是把 \(f_0\) 通过某些方式(按照定义)算出来然后从下往上推。

一个比较高明的方式是发现 \(f_{k+1}=0\),然后可以直接倒着推回来。

得到了 \(\mathcal F(x)\) 的各项系数后,即可得到答案

\[\begin{aligned} &[x^k]\mathcal F(e^x)\\ =&[x^k]\sum_{i=0}^kf_ie^{ix}\\ =&\sum_{i=0}^kf_ii^k \end{aligned} \]

可以 \(O(k)\) 算出。大致就是这样的过程。我们见到的应用多为 \(F(e^x)\) 的形式,但里边的函数其实可以换成别的,详见 EI 原文。

P5907 数列求和加强版 / SPOJ MOON4

另一道例题。首先经过简单转化,答案为

\[[x^k]\frac{1-(ae^x)^{n+1}}{1-ae^x} \]

于是设 \(F(x)=\dfrac{1-x^{n+1}}{1-x}\)。求导表示自己得到 ODE(设 \(G(x)=1-x^{n+1}\))

\[(1-x)F'(x)=G'(x)+F(x) \]

于是

\[(1-x-a)F'(x+1)=G'(x+a)+F(x+a) \]

仍设 \(\mathcal F(x+a)=F(x+a)\bmod x^{k+1},\mathcal G(x+a)=G(x+a)\bmod x^{k+1}\),有

\[(1-x-a)\mathcal F'(x+a)-\mathcal F(x+a)=-(n+1)\sum_{i=0}^k\binom nix^ia^{n-i}-(k+1)x^k[x^k]F(x+a) \]

\[(1-x)\mathcal F'(x)-\mathcal F(x)=\mathcal G'(x)-(k+1)(x-a)^k[x^k]F(x+a) \]

算下 \(\mathcal G'(x)\)(这里 \(n\leftarrow n+1\)):

\[\begin{aligned} \mathcal G(x+a)=&\sum_{i=0}^k\binom nix^ia^{n-i}\\ \mathcal G(x)=&\sum_{i=0}^k\binom nia^{n-i}(x-a)^i\\ =&\sum_{i=0}^k\binom nia^{n-i}\sum_{j=0}^i\binom ijx^j(-a)^{i-j}\\ =&\sum_{j=0}^k\binom njx^ja^{n-j}\sum_{i=j}^k\binom{n-j}{i-j}(-1)^{i-j}\\ =&\sum_{j=0}^k\binom njx^ja^{n-j}\sum_{i=0}^{k-j}\binom{n-j}{i}(-1)^i\\ =&\sum_{j=0}^k\binom njx^ja^{n-j}[x^{k-j}]\frac{(1-x)^{n-j}}{1-x}\\ =&\sum_{j=0}^k\binom njx^ja^{n-j}\binom{n-j-1}{k-j}\\ \mathcal G'(x)=&\sum_{i=1}^k\binom nix^{i-1}a^{n-i}\binom{n-i-1}{k-i}\\ \end{aligned} \]

另一边:

\[\begin{aligned} &(k+1)(x-a)^k[x^k]F(x+a)\\ =&(k+1)\sum_{i=0}^k\binom kix^i(-a)^{k-i}[x^k]\sum_{j=0}^n(x+a)^j\\ =&(k+1)\sum_{i=0}^k\binom kix^i(-a)^{k-i}h_k \end{aligned} \]

考虑计算 \(h_k=\sum_{i=k}^n\dbinom ika^{i-k}\):

首先特判 \(a=1\),上指标求和得到是 \(\dbinom{n+1}{k+1}\)。

\[\begin{aligned} h_k=&\sum_{i=k}^n\binom ika^{i-k}\\ =&\sum_{i=k}^n\left(\binom{i-1}{k-1}+\binom{i-1}k\right)a^{i-k}\\ =&\sum_{i=k-1}^{n-1}\binom i{k-1}a^{i-(k-1)}+a\sum_{i=k}^{n-1}a^{i-k}\binom ik\\ =&h_{k-1}-a^{n-k+1}\binom n{k-1}+a\left(h_k-q^{n-k}\binom nk\right) \end{aligned} \]

可以递推。于是可以递推得到 \(\mathcal F(x)\),答案即为 \(\sum_{i=0}^kf_ia^ii^k\)。

实际上有时候并没有有限微积分的方法简洁,但是它的重要意义是提出了一个通用的方法。

标签:begin,end,sum,binomial,mathcal,binom,aligned
From: https://www.cnblogs.com/gtm1514/p/17364998.html

相关文章

  • [ABC140E] Second Sum
    2023-02-13题目题目传送门翻译翻译难度&重要性(1~10):4题目来源AtCoder题目算法双向链表解题思路\(1.\)当我们用从小到大的顺序来求解时,把原来求过的都直接跳过,不用再进行重新求解,以此来降低时间的复杂度。\(2.\)在我们每次更新时,比当前小的数都已经被跳过了,所以可......
  • [20230427]bbed sum apply问题2.txt
    [20230427]bbedsumapply问题2.txt--//使用bbed修改数据块时,最后总要sumapply改写校验和,但是修改redo文件是一个例外,sumapply不会修改.--//通过例子说明:1.环境:SCOTT@book>@ver1PORT_STRING                   VERSION       BANNER--------......
  • B. Sum of Two Numbers - 贪心+思维+构造
    题意:给定一个整数n,输出x,y满足以下要求:1.x+y=n2.x的每一位上的数加在一起的数位和和y的数位和相差不超过1.分析:从高位开始依次遍历,将其平均分给x和y,奇数剩余的1由x和y轮流加上。代码:#include<bits/stdc++.h>#defineendl'\n'usingnamespacestd;......
  • 勇士召唤Summon Quest一款mac冒险游戏 中文版
    SummonQuest是一款卡牌收集类的手机游戏,玩家需要在游戏中收集各种强力的卡牌,并组建自己的队伍来进行战斗。游戏采用了即时战斗的方式,玩家需要根据卡牌的属性和技能来制定最佳策略,战胜对手。游戏特色:卡牌收集:SummonQuest拥有数百张不同类型的卡牌,每个卡牌都有独特的属性和技能,玩家......
  • sumOfNegatives
    Countofpositives/sumofnegativesGivenanarrayofintegers.Returnanarray,wherethefirstelementisthecountofpositivesnumbersandthesecondelementissumofnegativenumbers.0isneitherpositivenornegative.Iftheinputisanemptyar......
  • Codeforces Round 689 (Div. 2, based on Zed Code Competition)D.Divide and Summari
    题意:我们给定包含n个正整数的数组,我们可以对这个数组执行一些操作之后,可以让数组内元素的和成为我们想要的数。我们对数组的执行操作一共分为三个步骤,第一个步骤是我们首先计算出数组的中间值mid。这里mid的定义不是中位数也不是均值,而是最大值和最小值的均值。也就是mid=(min......
  • AtCoder Beginner Contest 283 Ex Popcount Sum
    洛谷传送门AtCoder传送门记录一下这个神奇的套路。首先有\(\operatorname{popcount}(n)=n-\sum\limits_{i=1}^{\infty}\left\lfloor\frac{n}{2^i}\right\rfloor\)。证一下:\[\operatorname{popcount}(n)=\sum\limits_{i=0}^{\infty}\left\lfloor\dfrac{n}{2^i}\right......
  • _sys_exit和_ttywrch,explicit type is missing (“int“ assumed)
    报错..\SYSTEM\usart\usart.c(64):error:#260-D:explicittypeismissing("int"assumed)_sys_exit(intx)..\SYSTEM\usart\usart.c(69):error:#260-D:explicittypeismissing("int"assumed)_ttywrch(intch)原本_sys_exit(intx......
  • work summary
    清除浮动.new_main.ul::after{content:"";display:block;clear:both;}文本超出隐藏overflow:hidden;text-overflow:ellipsis;//结尾用...display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;//文字显示行数轮播图$('.slide_pic').slick({......
  • Investigating Div-Sum Property UVA - 11361
     定问在[A,B]中,有多少个整数本身能被m整除,各个数位上数字之和也能被m整除?  #include<iostream>#include<cstring>#include<vector>usingnamespacestd;vector<int>a;intm,f[40][105][105][2];intdfs(intx,intv1,intv2,intflg){ if(x<0) retur......