![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
生成函数
文章平均质量分 92
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【LOJ6713】「EC Final 2019」狄利克雷 k 次根 加强版(狄利克雷生成函数)
传送门题解:我记得 SCOI2019 考完之后我就口胡过这个东西,当时D1T3 超矩形。。。考虑 Dirichlet 生成函数:F(x)=∑i≥1fiixF(x)=\sum_{i\geq 1}\frac{f_i}{i^x}F(x)=∑i≥1ixfi。考虑 Dirichlet 卷积:(f∗g)(n)=∑d∣nf(d)g(nd)(f*g)(n)=\sum_{d\mid n}f(d)g(\frac{n}{d})(f∗g)(n)=∑d∣nf(d)g(dn),不难发现 Dirichlet 卷积的原创 2020-05-25 09:27:32 · 1239 阅读 · 2 评论 -
【清华集训2017】生成树计数(生成函数)(prufer序列)(牛顿恒等式)
传送门题解:凭借直觉 按照套路,考虑每个原来的连通块当成点,枚举prufer序列,假设第 iii 个连通块在 prufer 序列中出现了 cic_ici 次,不难发现对应的合法的 prufer 序列有 (n−2)!/∏ici!(n-2)!/\prod_i c_i!(n−2)!/∏ici!,对应全树还需要乘上 ∏iaici+1\prod_i a_i^{c_i+1}∏iaici+1。...原创 2020-04-22 11:31:34 · 580 阅读 · 0 评论 -
【LOJ6609】无意识的石子堆 加强版(容斥)(DP)
传送门题解:冷静一下我们知道加强版常数上是不允许任何类型的牛顿迭代出现的,目前知道以下两种思路上不同的做法。首先不难发现每行都必须有两个石子,所以讨论的重点肯定在列上面。做法 1:行当做一个点集,列当做一个点集,每个位置放的石子视为一条行向列连出的边。不难发现这玩意是个二分图,设左边有 nnn 个二度点,右边有 kkk 个二度点和 2(n−k)2(n-k)2(n−k) 个一度点,需要...原创 2020-04-22 08:47:15 · 503 阅读 · 0 评论 -
【校内模拟】黑暗(第二类斯特林数)(多项式求逆)
简要题意:here题解:设 c(G)c(G)c(G) 表示图 GGG 的联通块数量,首先利用第二类斯特林数转成下降幂:nm=∑k=0mSm,knk‾n^m=\sum_{k=0}^mS_{m,k}n^{\underline k}nm=k=0∑mSm,knk考虑 c(G)k‾c(G)^{\underline k}c(G)k 的意义,就是有序选择 kkk 个连通块的方案数,这部分有点像...原创 2020-04-09 17:18:21 · 225 阅读 · 0 评论 -
【校内模拟】考试(生成函数)(牛顿恒等式)
简要题意:你有 nnn 个连续随机变量 xix_ixi,xix_ixi 在 [0,ai][0,a_i][0,ai] 中均匀随机,求 E((∑i=1nxi)m)E((\sum\limits_{i=1}^n x_i)^m)E((i=1∑nxi)m)。题解:考虑求定积分,然后二项式展开,式子很长不写了,最后发现是个卷积。我们需要求的是如下生成函数的第 mmm 项 ∏i=1n(eaix...原创 2020-04-07 15:28:23 · 447 阅读 · 0 评论 -
【校内模拟】亲(二项式展开)(多项式快速幂)(快速插值)(MTT)
简要题意:你有一个数,初始为000,有 nnn 个机会,每个机会有 Q/(1+Q)Q/(1+Q)Q/(1+Q) 的概率使你的数 +1,请计算所有小于等于你的数的自然数的 kkk 次幂之和的期望。题解:设 fn,if_{n,i}fn,i 表示用了前 nnn 个机会,你的数的 iii 次幂的期望。转移考虑二项式展开,乘的东西不变,直接多项式快速幂。根据期望的线性性,由于 kkk 次幂之和...原创 2020-04-07 15:20:48 · 367 阅读 · 0 评论 -
【校内模拟】fac(生成函数)(拉格朗日反演)
简要题意:给出 n,kn,kn,k 求 ∀0≤i<n,(ki)!((k−1)i)!\forall 0\leq i < n,\frac{(ki)!}{((k-1)i)!}∀0≤i<n,((k−1)i)!(ki)!少见的做题比出题难不知道多少倍的题。题解:乍一看并不好做,转成形式上比较接近的组合数也是 (kii){ki\choose i}(iki),并不好处理下标。...原创 2020-03-28 23:42:32 · 508 阅读 · 0 评论 -
【洛谷P4389】付公主的背包(生成函数)(多项式exp)
传送门题解:很容易想到我们需要计算答案的生成函数。很容易发现其实就是:F=∏i=1n∑j=0∞xj⋅vi=∏i=1n11−xvi\begin{aligned}F=&\prod_{i=1}^n\sum_{j=0}^\infty x^{j\cdot v_i}\\=&\prod_{i=1}^n\frac{1}{1-x^{v_i}}\end{aligned}F==i=...原创 2020-02-10 16:09:31 · 341 阅读 · 0 评论 -
【清华集训2017】福若格斯(不平等博弈)(Surreal Number)(生成函数)(二项式展开)
传送门讲个笑话,把这道题A了才能算 “Surreal Number在不平等博弈中的应用” 入门理解不能题解:不要以为双方棋子属性相同就不是不平等博弈了。。。不平等博弈指的是在一个局面下轮到LLL走,LLL能够进行的合法操作和轮到RRR走,RRR能够进行的合法操作不同。注意到这个是无环的而且有多个局面,而且还TM要计数,考虑用Surreal Number来描述这个游戏。由于题目说了只...原创 2019-11-07 21:58:56 · 557 阅读 · 0 评论 -
【校内模拟】子树问题(组合数学DP)(多项式exp)
简要题意:请你对满足如下限制的树计数:根节点深度为111,最大节点深度在L−RL-RL−R之间(分别回答)节点的标号满足堆性质给定正整数集合{a}\{a\}{a},没有任何一个节点的子树大小在集合中。n≤500n\leq 500n≤500题解:考虑子树拼接可以得到一个比较好懂的O(n3)O(n^3)O(n3)组合数学DP。然而我对这个模型实在是太熟悉了,于是考场上想都没想直接去...原创 2019-11-02 15:59:22 · 296 阅读 · 0 评论 -
【WC2019】数树(容斥原理)(生成函数)(树形DP)(多项式Exp)(数数神题)
传送门没弄明白前觉得毒瘤,弄明白之后,这TM就是数数神题啊。然而我这道题将近一半的代码都在写多项式全家桶。。。这道题的推导过程确实有点繁琐,但是没有办法啊,毕竟性质就是这么复杂啊。白云和白兔(laofu出题用的NPC),老虎和蒜头(whzzt出题用的NPC),真心有毒真的牛逼啊。。。题解:首先简单分析一下题目的那个限制:有公共路径的点颜色必须一样。很容易发现其实就是两棵树里面的公共...原创 2019-10-29 19:17:54 · 262 阅读 · 0 评论 -
【证明】森林上加边成树的方案数
给你kkk个树,大小分别为a1,a2,⋯aka_1,a_2,\cdots a_ka1,a2,⋯ak,总点数n=∑i=1kain=\sum_{i=1}^ka_in=∑i=1kai,则在这个森林中加边使得最终的图是一棵树的方案数是nk−2∏i=1kain^{k-2}\prod_{i=1}^{k}a_ink−2i=1∏kai目前知道三种证明方式,全部在这里放出来:proof 1:其...原创 2019-10-29 18:26:44 · 242 阅读 · 2 评论 -
解线性递推式通项的一点小trick
在做【GXOI/GZOI2019 逼死强迫症】的时候,在题解区看到一种并没有解待定系数方程,而利用生成函数和特征方程直接算出通项公式的做法,去UOJ群里面问了下群友,一位dalao在私信里面给了我一份《信号与系统——奥本海姆(第二版)》,在附录里面找到了一种比较通用的方法,感觉还不错,在这里记录一下。主要是有的方程列待定系数方程太TM麻烦了还难算,这里给出一种方法从一些角度优化人脑计算部分的计算...原创 2019-10-16 08:44:16 · 186 阅读 · 0 评论 -
【GXOI/GZOI2019】逼死强迫症(生成函数)
传送门题解:构建矩阵快速幂的做法基本上敢来做省选的人都会了,这里不谈了。首先设fif_ifi表示斐波那契数列第iii项,我们知道1⋅11\cdot 11⋅1两侧都是斐波那契数列,得到:Fn=2∑i=3n∑j=infj−i+1fn−jF_n=2\sum_{i=3}^n\sum_{j=i}^nf_{j-i+1}f_{n-j}Fn=2i=3∑nj=i∑nfj−i+1fn−j直接得...原创 2019-10-14 21:22:29 · 176 阅读 · 0 评论 -
【ZJOI2019】开关(生成函数)(单位根反演)(背包DP)
传送门题解:设pip_ipi表示一次操作中选择了第iii个开关的概率。首先设F(x)F(x)F(x)表示操作了iii次之后的状态是开门状态的概率的EGFEGFEGF,注意我们并不要求这个时刻是第一次达到开门状态,考虑单位根反演,得到:F(x)=∏i=1nepix+(−1)sie−pix2F(x)=\prod_{i=1}^{n}\frac{e^{p_ix}+(-1)^{s_i}e^{-p...原创 2019-10-11 09:22:03 · 212 阅读 · 0 评论 -
【CF1010F】Tree(链分治)(分治NTT)
传送门时限7s的题的复杂度令人捉摸不透。。。O(nlog3n)O(n\log^3n)O(nlog3n)拿下CFrk1(仗着这道题分治FFT部分常数小),好像std也是O(nlog3n)O(n\log^3 n)O(nlog3n)的。。。问题简述如下:一颗二叉树,根节点为111,允许你砍掉任意子树,保留根节点所在的连通块,然后要求你设置每个点的权值,要求每个点权值不小于它的两个儿子的权值...原创 2019-09-28 21:02:42 · 573 阅读 · 0 评论 -
【集训队作业2018】普通的计数题(牛顿迭代)(常微分方程)
传送门这种题想清楚之后基本上就是乱写都能AC。题解:做集训队作业,第一步永远都是模型转换。。。发现除了最后一个操作,其他操作产生的字符一定会被一个1操作消掉。可以转化成有根树上的父子关系。如果一个操作aaa被另一个操作bbb消除,则我们令bbb为aaa父亲。问题转化为满足下列条件的树的计数:标号为1到n,且标号满足大根堆性质。对于一个非叶节点,如果它有儿子是非叶节点,则它的叶子...原创 2019-09-20 15:52:44 · 466 阅读 · 0 评论 -
【UOJ#50】【UR #3】链式反应(常微分方程)(牛顿迭代)
传送门一般当牛顿迭代里面套了Exp的时候,能写分治FFT就写分治FFT,多半跑得比牛顿迭代快。 ——zxyoi分治FFT题解:https://blog.csdn.net/zxyoi_dreamer/article/details/101037455题解:首先将问题转化为如下形式:对满足如下条件的nnn个点的树计数,其父亲儿子的标号满足堆性质,非叶节点有c+2c+2c+2个儿...原创 2019-09-20 11:10:54 · 527 阅读 · 0 评论 -
【UOJ#50】【UR #3】链式反应(CDQ分治)(NTT)
传送门题解:首先把这个长且扯淡的题面先转成人话。请你计算有多少棵有根树,父亲儿子标号满足堆性质,并且非叶节点有c+2c+2c+2个儿子,其中c∈Ac\in Ac∈A,ccc个儿子全部都是叶子,剩下两个儿子不是叶子,它们的子树符合上述性质(请递归理解)。一个很显然的DP就出来了,设fif_ifi表示iii个点的方案数,则fi=12∑j=1∑k=1[i−1−j−k∈A](i−1j)(i−...原创 2019-09-19 22:01:23 · 272 阅读 · 0 评论 -
【THUPC2017】【LOJ2409】小 L 的计算题 / Sum(牛顿恒等式)(分治NTT)(多项式求逆)
传送门这道题有一个推式子之后分治NTT+Ln+Exp的做法,不过也有一个不用Ln+Exp的做法(理论常数要小点,实际差不多)。题解:这道题可以牛顿恒等式直接推出一个非常好写的东西。首先看一下牛顿恒等式的描述:对于nnn次多项式A(x)=∑i=0naixiA(x)=\sum_{i=0}^na_ix^iA(x)=∑i=0naixi,an!=0a_n!=0an!=0,设bi=an−ib...原创 2019-09-19 19:39:23 · 306 阅读 · 0 评论 -
【题目泛做】蛋糕(分治NTT)
题解:原题是THUPC2018蛋糕,然后这里扩展到了n维,没什么区别。核心思想就是一个块在其他维度上随便乱跑,在这个维度上也能随便乱跑。所以我们实际上要考虑的就是在每一维上出现0,1,2个面的方案数。每一维可以任意选择,所以直接分治NTT把每一维的生成函数乘起来就行了。代码:#include<bits/stdc++.h>#define ll long long#defi...原创 2019-09-19 16:03:53 · 264 阅读 · 0 评论 -
2018.12.31【NOIP训练】三七二十一(生成函数)
传送门解析:设nnn位数的答案为ana_nan,则显然{an}\{a_n\}{an}的生成函数为:A(x)=(1+x22!+x44!+...)2×(1+x1+x22!+...)3A(x)=(1+\frac{x^2}{2!}+\frac{x^4}{4!}+...)^2\times (1+\frac{x}{1}+\frac{x^2}{2!}+...)^3A(x)=(1+2!x2+4!x4...原创 2018-12-31 17:26:03 · 498 阅读 · 0 评论 -
2019.02.26【九省联考2018】【BZOJ5250】【洛谷P4365】秘密袭击(树形DP)(线段树合并)(生成函数)(拉格朗日插值)(暴力碾标算)
BZOJ传送门洛谷传送门解析:首先这道题O(nk(n−k))O(nk(n-k))O(nk(n−k))的暴力就已经可以过了(而且不用开O2)。(据说这个上界不容易被卡满)而标算不开O2O2O2过不去,开了还是跑不过暴力。。。先来说说暴力:直接考虑DP出每个点作为第kkk大的方案数有多少,然后算就行了。由于我们只需要考虑第kkk大,这里可以剪一剪枝,最多只需要跑O(n−k)O(n-k)...原创 2019-02-26 18:43:50 · 528 阅读 · 0 评论 -
2019.03.22【洛谷P4841】城市规划(生成函数)(多项式Ln)
传送门解析:先考虑不带标号的图,然后算上标号直接乘上n!n!n!。令nnn个点的无标号连通图个数为fnf_nfn,生成函数为F(x)F(x)F(x)。令nnn个点的无标号图个数为gng_ngn,生成函数为G(x)G(x)G(x)。显然gng_ngn可以通过枚举每条边是否出现得到,gn=2(n2)n!g_n=\frac{2^{n\choose 2}}{n!}gn=n!2(2n)...原创 2019-03-22 09:33:02 · 174 阅读 · 0 评论 -
2019.04.03【校内模拟】战略游戏(game)(组合数学)(生成函数)(FFT)(树形DP)
传送门解析:在看完题目三个条件之后,我们得到需要做的事情就是,钦定两个点为特殊点,它们之间的路径为特殊路径,计算向外伸出小于等于kkk个互不相交的分叉的方案数。k=1k=1k=1的情况直接输出答案即可。现在我们不考虑编号大小,最后方案数/2/2/2即可。显然我们需要树形DP。设我们当前处理到uuu,c[i]c[i]c[i]表示以uuu为根的子树向子树内伸出iii个互不相交的分叉的方案...原创 2019-04-03 22:03:10 · 239 阅读 · 0 评论 -
2019.04.02【51nod1228】序列求和(伯努利数)
传送门解析:伯努利数初探(还没写,几天后还看见这个说明我忘了,记得催更)当然要是你想学拉格朗日插值就去看一下这道题:教科书般的亵渎代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ i...原创 2019-04-02 15:50:18 · 213 阅读 · 0 评论 -
2019.03.29【洛谷P4451】【BZOJ2173】整数的lqp拆分(生成函数)
洛谷传送门BZOJ传送门解析:设gig_igi表示一个整数的lqp拆分的权值,其生成函数为G(x)G(x)G(x),fif_ifi表示第iii个斐波那契数,生成函数为F(x)F(x)F(x)。令g0=0,g1=1g_0=0,g_1=1g0=0,g1=1很显然我们可以发现:gn=∑i=1ngifn−i+fnG=G∗F+Fg_n=\sum_{i=1}^{n}g_if_{n-i}+...原创 2019-03-29 10:13:26 · 175 阅读 · 0 评论 -
2019.04.02【51nod1258】序列求和 V4(伯努利数)(生成函数)(多项式求逆)
传送门解析:伯努利数初探(还没写,几天后还看见这个说明我忘了,记得催更)由于kkk变大了,O(n2)O(n^2)O(n2),所以需要用伯努利数的生成函数通过多项式求逆来得到数列。由于毒瘤模数需要用MTT。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_c...原创 2019-04-02 19:21:49 · 389 阅读 · 0 评论 -
2019.03.29【洛谷P4931】情侣?给我烧了!(加强版)(组合数学)(生成函数)
传送门顺便把弱化版一起切了:P4921解析:这种数数问题还是考虑分部分计算。一,匹配的k对这部分很简单,选出kkk个位置上火刑柱 (nk)n\choose k(kn),选出kkk对送到FFF大本营 (nk)n\choose k(kn),在kkk个位置里面选择k!k!k!,每一对两个人位置可以互换2k2^k2k。所以这一部分的计算就是(nk)2k!2k{n\choose k}^2k...原创 2019-03-29 13:43:26 · 199 阅读 · 0 评论 -
【UOJ450】【集训队作业2018】复读机(生成函数)(单位根反演)
传送门题解:很显然一个复读机的EGFEGFEGF就是∑i=0∞[d∣i]i!xi\sum\limits_{i=0}^{\infty}\frac{[d\mid i]}{i!}x^ii=0∑∞i![d∣i]xi发现d=1,2,3d=1,2,3d=1,2,3的时候模意义下都有单位根,考虑单位根反演,得到一个复读机生成函数为:1d∑i=0∞xii!∑j=0d−1ωdij=1d∑j=0d−1e...原创 2019-07-02 14:34:07 · 302 阅读 · 2 评论 -
【洛谷P4709】信息传递(置换)(组合数学)(多项式Exp)
传送门题解:很早之前看到过这道题,当时连置换是什么都不知道。。。首先考虑置换ggg中的某一个长为SSS的循环环,学过群论的应该知道,在置换自乘nnn次之后,这个循环会变为gcd(n,S)gcd(n,S)gcd(n,S)个循环。考虑将ttt个长为SSS的循环拼接成一个,使得若干次自乘之后这个循环断裂为ttt个长为SSS的循环。翻过任何一本群论教材就知道,最后在同一循环中的元素是那些只与初始...原创 2019-07-29 21:34:47 · 333 阅读 · 0 评论 -
【LOJ6261】一个人的高三楼(生成函数)(NTT)
传送门题解:设F0(x)F_0(x)F0(x)为原序列的生成函数。Fk(x)F_k(x)Fk(x)是进行了kkk次求和的序列的生成函数考虑找到一个多项式G(x)G(x)G(x),使得Fk−1(x)⋅G(x)=Fk(x)(modxn)F_{k-1}(x)\cdot G(x)=F_{k}(x)\pmod {x^n}Fk−1(x)⋅G(x)=Fk(x)(modxn)很显然一个合法的G(...原创 2019-07-27 16:00:32 · 201 阅读 · 0 评论 -
【HDU6426】【LOJ6538】Alkane(生成函数)(分治NTT)(Burnside)
比较毒瘤的群论推导题原创 2019-07-28 20:41:04 · 685 阅读 · 1 评论 -
【模板】【洛谷P5409】第一类斯特林数·列(多项式Exp)(多项式快速幂)
传送门题解:感觉求这个玩意的方法略迷,记录一下这个清奇的思路。考虑展开(1+x)t(1+x)^t(1+x)t(1+x)t=∑i=0∞(ti)xi=∑i=0∞xiti‾i!=∑i=0∞xii!∑j=0i[ij](−1)i−jtj=∑j=0∞tj∑i=j∞xii![ij](−1)i−j\begin{aligned}(1+x)^t&=&&\su...原创 2019-08-13 19:50:43 · 171 阅读 · 0 评论 -
【TJOI/HEOI2016】【洛谷P4901】【LOJ2058】【BZOJ4555】求和(生成函数)
传送门题解:现在拿到洛谷rank1,BZOJrank1,LOJrank1。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constcs int mod=998244353;inline int add(int a,int b){return (a+=b)&g...原创 2019-08-16 15:20:52 · 118 阅读 · 0 评论 -
【Hihocoder1512】生成树计数(矩阵树)(生成函数)(重心拉格朗日插值)
传送门题解:首先考虑kkk次方的组合意义,其实就是无序地,允许重复地选出kkk个数求乘积而已。对于边权为www的边,设其对答案的贡献的EGF为∑i=0∞(wx)ii!\sum_{i=0}^\infty \dfrac{(wx)^i}{i!}∑i=0∞i!(wx)i则答案就是这个东西求矩阵树的多项式的第kkk项系数乘上k!k!k!。所有EGF需要保留前kkk项,结果是一个nknknk次...原创 2019-09-10 19:25:43 · 226 阅读 · 1 评论 -
2018.12.31【NOIP训练】偶数个5(生成函数)(快速幂)
传送门解析:设ana_nan是nnn位数中出现偶数个555的数的个数,bnb_nbn是nnn位数中出现奇数个555的数的个数。显然我们有以下递推方程组:{a1=8,b1=1an=9an−1+bn−1bn=9bn−1+an−1\left\{\begin{aligned}&amp;amp;a_1=8,b_1=1 \\ &amp;amp;a_n=9a_{n-1}+b_{n-1}\\...原创 2018-12-31 16:21:12 · 226 阅读 · 0 评论