趣谈生成函数 =v=
趣谈生成函数 =v=
今天luyouqi在洛谷随机跳题rand出来一道生成函数板子题,然后我给做了(雾
发现小伙伴们还不会生成函数,于是我试着写这篇生成函数简介。(其实我也不怎么会生成函数这么高级的东西,本篇纯属道听途说,大家看着当故事娱乐一下就好)
食用指南
- 笔和草算纸是推荐的食用工具
从前有一个无限长的随便一个数列,有一天,一个大佬说:能不能用一个函数表示这个数列呢?于是大佬把的每一项当做一个多项式的系数,得到了多项式函数,用来表示上面那个序列。大佬很开心。
大佬的朋友——蒟蒻感到疑惑:这个函数代入一个,得到的东西有什么意义啊?
大佬思考了一会,说:也没什么意义。
蒟蒻说:那你研究它有个*儿用?
大佬又思考了一会,找到了它的一种用途。假如数列代表一类物品,中表示这类物品中选件物品的方案数——例如表示A类物品中可以选0件或1件或2件,但不能选大于2件;又例如无限长数列表示B类物品只能选3的倍数件。这时候,把和乘起来,得到另一个函数。这个函数有什么意义呢?它的第项的系数就是选A、B两种物品共件的方案数。
蒟蒻说:这有啥,不就是把两个多项式乘起来么?和一个个枚举有什么区别?
大佬说:嗯……你可以FFT……
蒟蒻:哦。没有这个函数我也知道可以FFT。
大佬不认为这个“用函数表示数列”的东西很没用,他决定继续研究,还给它取了个名字叫做数列的“生成函数”,表示用这个函数能生成(表示)一个数列。
有一天,大佬告诉蒟蒻他发现了一个规律——的生成函数是
蒟蒻说:老哥,您不会是研究数学研究傻了吧?它的生成函数不是嘛?怎么会等于您这个呢?
大佬说:对啊!就等于!
蒟蒻:喂,大连市第七人民医院嘛?
大佬:……在的时候。
蒟蒻:你不早说!等等,为什么时就相等了?
大佬:等比数列求和公式啊,的前项和等于,这是个无限长的数列,趋近于无穷的时候趋近于0,这不就相等了嘛!
蒟蒻:啊,对啊!可是好好的一个函数,你凭空给限定了定义域,这还是原来那个函数嘛?
大佬:不是你说的生成函数中的没有意义嘛!还有,你看这个函数,它是不是等于?
蒟蒻:对,把前一个式子中的换成不就好了嘛!可是这个函数,它等于什么?
大佬:等于啊!你看,对等式两边分别求导,得到……算了,说了你也不懂,那你把两个乘起来不就好了嘛!
蒟蒻:蛤?我看看……的确诶!
大佬:我还知道的生成函数是多少呢!是!推广开来,生成的数列是!
蒟蒻:为什么啊?
大佬:你看就是个相乘,就是个相乘嘛。那么它的第项系数就是从个中每个选出一项,乘起来恰为的方案数,就是的非负整数解的组数,你用组合数学中的所谓“隔板法”求一下,是不是?
蒟蒻:有道理!
大佬:了解了和这两种特殊生成函数,就掌握了一类题的技巧——来做道题吧!Luogu P2000 欢迎你!
大佬:我还会用生成函数求斐波那契数列通项!
蒟蒻:这么牛逼?
大佬:首先啊,你看这个斐波那契数列的生成函数,然后把它乘个,得,用前式减去后式,得到,所以!
蒟蒻:可是这不是我们之前见过的那两种特殊生成函数,你怎么把它还原成数列呢?
大佬:我打算把它变成等比数列求和的形式!这个分母是可以因式分解的,分解后就是,所以,看着非常难受,裂项一下,得到这就成了两个等比数列求和公式乘个常数再相加的形式了!把两个等比数列还原成数列,得到这就是斐波那契数列通项公式了!
蒟蒻:哇!这么神奇!
大佬:据说这种方法可以应用到各种线性齐次递推中哦~
博客地址:http://rabbithu.cnblogs.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)