首页 > 其他分享 >Binomial Sum 学习笔记

Binomial Sum 学习笔记

时间:2023-09-26 19:33:24浏览次数:35  
标签:dfrac Sum 笔记 displaystyle Binomial ax mathcal binom sum

这是EI写的一个神秘科技。我只能把它最简单的东西讲述出来。
用于\(O(k+\log n)\)复杂度解决一类求和问题。
使用条件:\(f(x)\)微分有限,话句话说,存在\(f\)的微分方程。
如果我容易知道\(\displaystyle\sum_{i=0}^{n}a_i[x^i]G(x)^k,k\in[0,]\),那么我就可以\(O(n)\)求\(\displaystyle\sum_{i=0}^n a_i[x^i]F(G(x))\)。
考虑对\(F\)泰勒展开。\(\displaystyle\sum_{k\ge 0}F^{(k)}(G(0))\dfrac{(G(x)-G(0))^k}{k!}\)。
这有什么优势呢?对于\(x\),可以发现\(k\)大于\(n\)的项是对答案没有贡献的,因为没有常数项。
设\(F(x)\)满足微分方程\(\displaystyle\sum_{i=0}^m p_i(x)F^{(i)}(x)=0\)。
易知\(\displaystyle\sum_{i=0}^m p_i(x+G(0))F^{(i)}(x+G(0))=0\)
现在我可以截取他的前\(n\)项系数变为\(\mathcal{F}\)。
这里可以认为是\(\mathcal{F}=F\mod (x-c)^n\)
\(\displaystyle\sum_{i=0}^m p_i(x+G(0))\mathcal{F}^{(i)}(x+G(0))=0\)
注意到跨过\(x^n\)的贡献突然出现,右边加上这个就可以\(O(nm)\)递推。
然后多项式带入原式,就可以\(O(n)\)求答案。
一般认为\(m\)是常数。

CF932E 加强版

给定 \(n,k\),求:$\displaystyle\sum_{i=1}^n\binom{n}{i}\times i^k,1 \leq k \leq 10^7,1 \leq n \leq 10^9 $。
不妨从\(0\)开始。
发现\(i^k=[\dfrac{x^k}{k!}]e^{xi}\)。
于是原式等于\(\displaystyle[\frac{x^k}{k!}]\sum_{i=0}^n\binom{n}{i}e^{ix}\)
等于\([\dfrac{x^k}{k!}](e^x+1)^n\)。
至此可以\(O(k\log k\log n)\)多项式快速幂,但是这不令人满足。
魔法,启动!
这里设\(F(x)=(x+1)^n,\mathcal{F}(x+1)=F(x+1)\mod x^{k+1}\)。
注意:\(F\)可以随意变换,但\(\mathcal{F}\)由于其特殊定义不能随便乱搞。
\((x+1)F'(x)-nF(x)=0\)
\((x+2)F'(x+1)-nF(x+1)=0\)
手推发现(这里\(x^k\)接收了从\(x^{k+1}\)来的不合法贡献)\((x+2)\mathcal{F}'(x+1)-n\mathcal{F}(x+1)=(k-n)x^k[x^k]F(x+1)\)。
发现右边可以乱搞,于是令\(x-1\to x\)。
\((x+1)\mathcal{F}'(x)-n\mathcal{F}(x)=(k-n)(x-1)^k [x^k]F(x+1)\)
于是可以得到\([x^i]\mathcal{F}\)的递推式。
具体来说,展开右边,令两边系数相等,得到:
\((i+1)f_{i+1}+if_i-nf_i=(k-n)\binom{n}{k}2^{n-k}\binom{k}{i}(-1)^{k-i}\)。
固然可以算\(f_0\),但更好的方法是发现\(f_{k+1}=0\)。
最后的答案,就是\([\dfrac{x^k}{k!}]\mathcal{F}(e^x)=[\dfrac{x^k}{k!}]\displaystyle{\sum_{i=0}^k e^{ix}[x^i]\mathcal{F}(x)}\)。
\([\dfrac{x^k}{k!}]\mathcal{F}(e^x)=[\dfrac{x^k}{k!}]\displaystyle{\sum_{i=0}^k e^{ix}[x^i]\mathcal{F}(x)}=\displaystyle{\sum_{i=0}^k i^k[x^i]\mathcal{F}(x)}\)\
做完了。
注意,这里不可以把\(\mathcal{F}\)任何方法展开。
本题中,\(G(x)=e^x,F(x)=(x+1)^n\)。
给我的感觉是这个玩意的难点在于构造\(F,G\dots\),,,
可能是我太菜了
看了半个小时没看懂,原来是展开掉了一个组合数,,,

P6667 如何优雅的求和

有一个多项式函数 \(f(x)\),最高次幂为 \(x^m\),定义变换 \(Q\):

\[Q(f,n,x)=\sum_{k=0}^{n}f(k)\binom{n}{k}x^k(1-x)^{n-k} \]

现在给定函数 \(f\) 和 \(n,x\),求 \(Q(f,n,x)\bmod998244353\)。
出于某种原因,函数 \(f\) 由点值形式给出,即给定 \(a_0,a_1,?,a_m\) 共 \(m+1\) 个数,\(f(x)=a_x\)。可以证明该函数唯一。
构造\(G(x)=e^x,F(x)=(ax+1-a)^n\)。(避免混淆,这里把\(x\)写作\(a\),但是注意\(a_i\)和\(a\)的区别)
接下来说明这个东西的正确性:
\([x^j]F(G(x))=(ae^x+1-a)^n =\displaystyle\sum_{i=0}^n \binom{n}{i}a^i(1-a)^{n-i}[x^j]e^{ix}\)。
而\([x^j]e^{ix}=\dfrac{i^j}{j!}\),所以原式\(=\displaystyle\sum_{i=0}^n \binom{n}{i}a^i(1-a)^{n-i}\dfrac{i^j}{j!}\)。
令\([x^j]f(x)=\frac{a_j}{j!}\),那么\(\displaystyle \sum_{j=0}^ma_j[x^j]G(x)^k=f(k)\)。
式子\(\displaystyle\sum_{j=0}^ma_j[x^j]\sum_{i=0}^n \binom{n}{i}a^i(1-a)^{n-i}\dfrac{i^j}{j!}\)
\(=Q(f,n,x)\)。
然后按照 Binomial Sum 的现成方法来就可以了。
这里容易发现 \(F\) 满足的一个微分方程:
\((ax+1-a)F'(x)-anF(x)=0\)。
\(G(0)=1\),所以设 \(\mathcal{F}(x)=F(x)\bmod(x-1)^{m+1}\),或\(\mathcal{F}(x+1)=F(x+1)\bmod x^{m+1}=(ax+1)^n \bmod x^{m+1}\)。
微分方程变换为 \((ax+1)F'(x+1)-anF(x+1)=0\),以预备换为关于 \(\mathcal{F}\) 的方程。
考察 \((ax+1)\mathcal{F}'(x+1)-an\mathcal{F}(x+1)\),其不合法的项从哪里来?
显然只有 \(\mathcal{F}'\) 从其原函数的 \(m+1\) 次跨向 \(m\) 次中来。
所以 \((ax+1)\mathcal{F}'(x+1)\),具体地说是后面那个 \(1\mathcal{F}'(x+1)\) 获得了贡献。但是实际上不存在。所以要在右边减去。
所以右边等于 \(-x^m[x^m]F'(x+1)=-na^{m+1}\binom{n-1}{m}x^m\)。
于是右边是一个可以变化、展开的项,令 \(x-1\to x\)。
然后得到 \((ax+1-a)\mathcal{F}'(x)-an\mathcal{F}(x)=-na^{m+1}\binom{n-1}{m}(x-1)^{m}\)。
于是提取系数,具体来说:
设 \([x^i]\mathcal{F}(x)=f_i\),\([x^i]\) 左式 \(=(1-a)(i+1)f_{i+1}+aif_i-anf_i\)。
同时 \([x^i]\) 右式 \(=-na^{m+1}\binom{n-1}{m}\binom{m}{i}(-1)^{m-i}\)。
由于两边多项式相等,系数也相等,左式等于右式,得出 \(f_i\) 递推式。
此时计算得到 \(f_0\) 的值是不明智的。注意到 \(f_{m+1}=0\),倒着推即可。注意特判 \(n\le m\)。
精细实现(预处理连续逆元)可以做到 \(O(m)\),不精细实现则是小常数 \(O(m\log m)\),吊打 NTT。

标签:dfrac,Sum,笔记,displaystyle,Binomial,ax,mathcal,binom,sum
From: https://www.cnblogs.com/british-union/p/bs.html

相关文章

  • openGauss学习笔记-80 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT性能基
    openGauss学习笔记-80openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT性能基准本节介绍了openGauss内存优化表(Memory-OptimizedTable,MOT)的MOT性能基准。80MOT性能基准我们的性能测试是基于业界和学术界通用的TPC-C基准。测试使用了BenchmarkSQL(请参见MOT样例TPC-C基......
  • openGauss学习笔记-81 openGauss 数据库管理-内存优化表MOT管理-内存表特性-MOT使用概
    openGauss学习笔记-81openGauss数据库管理-内存优化表MOT管理-内存表特性-MOT使用概述MOT作为openGauss的一部分自动部署。有关如何计算和规划所需的内存和存储资源以维持工作负载的说明,请参阅MOT准备。参考MOT部署了解MOT中所有的配置,以及服务器优化的非必须选项。使用MOT的方......
  • NLP经典论文,自我回顾笔记
    (持续更新,目前找工作中)1. SequencetoSequenceLearningwithNeuralNetworks(2014GoogleResearch)However,thefirstfewwordsinthesourcelanguagearenowveryclosetothefirstfewwordsinthetargetlanguage,sotheproblem’sminimaltime......
  • 极光笔记 | 聊一聊推送系统中事件驱动架构的应用
    微服务间通信方式主要有2种:RPC和消息传递。通常来说在请求/响应的场景下使用RPC更加合适,具体实现通常是RESTAPI或者基于长链接的协议(例如gRPC/Thrift/ZeroICE等)。两个服务有比较强的依赖关系,调用者依赖被调用者的处理结果,调用者处理该请求被堵塞以等待响应结果,同时还要进行负载......
  • linux系统读书笔记 第二章
    读书笔记:学习Linux操作系统基础知识最近我开始学习Linux操作系统,并涉及了一些核心概念和工具,包括Linux系统文件目录与路径、目录与文件操作、Vim编辑器以及文件时间管理。通过学习这些内容,我对Linux的理解更加深入,也对如何在Linux环境下进行文件管理和编辑有了更多的掌握。首先,......
  • 动态规划——数位DP 学习笔记
    动态规划——数位DP学习笔记定义引入数位DP往往都是这样的题型:给定一个区间\([l,r]\),求这个区间中满足某种条件的数的总数。简单的暴力代码如下:intans=0;for(inti=l;i<=r;++i)if(check(i))++ans;而当数据规模过大,暴力枚举就\(\mathbbT\)飞了,因此......
  • 学习笔记四
    学习笔记四一、作业要求自学教材第7、8章,提交学习笔记(10分),评分标准如下:知识点归纳以及自己最有收获的内容,选泽至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学***X知识点,请你以苏格拉底的方式对我进行提问,一次一个问题......
  • 《流畅的Python》 读书笔记 230926(第一章后半部分)
    1.2如何使用特殊方法特殊方法的存在是为了被Python解释器调用的,你自己并不需要调用它们就是说通常你都应该用len(obj)而不是obj.__len()__,无论是系统预置的,还是你自己定义的类,交给Python,解释器会去调用你实现的__len()__然而如果是Python内置的类型,比如列表(list)、字符......
  • 唐老狮Unity基础笔记
    唐老狮Unity基础笔记三角函数Mathf.Rad2DegMathf.Deg2Rad 坐标系 向量    ......
  • Linux shell编程学习笔记1:关于shell的前世今生
    一、什么是Shell?Shell英文单词的原意是“外壳”,在计算机领域专指在操作系统(OperatingSystem)外层,提供用户界面(UserInterface)的程序,主要负责将用户的命令(Command)转化为操作系统可识别的指令(Instruction)。二、UnixshellUnix诞生于1969年,是最早提供shell,从而将操作系统和用户界面......