![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
多项式
dinlon
这个作者很懒,什么都没留下…
展开
-
#50. 【UR #3】链式反应(动态规划/生成函数/分治NTT/解微分方程)
#50. 【UR #3】链式反应https://vfleaking.blog.uoj.ac/blog/43https://www.cnblogs.com/Paul-Guderian/p/10487214.html对于一个n个节点的树,编号从1到n,要求每个点的编号小于儿子,并且有两类点,蓝点没有儿子,每个红点要么连接两个红点和若干蓝点,蓝点儿子的数量属于集合A,要么没有儿子。求解树的个数。我们考虑dp,dp[i]dp[i]dp[i]表示i个点的树的答案,然后有发现这是一个背包的形式,所以我们可以考原创 2021-03-03 21:27:00 · 91 阅读 · 0 评论 -
FFT相关
#include<bits/stdc++.h>#define LL long long#define V inline void#define I inline int#define FOR(i,a,b) for(register int i=a,end##i=b;i<=end##i;++i)#define REP(i,a,b) for(register int i=a,end##i=b;i>=end##i;--i)#define go(i,x) for(int i=he原创 2021-03-03 09:56:21 · 64 阅读 · 0 评论 -
自然数幂之和
自然数幂之和https://blog.csdn.net/suncongbo/article/details/97622131这个文章的整理非常全面。原创 2021-02-08 15:35:12 · 312 阅读 · 0 评论 -
CF1251F Red-White Fence(多项式/背包问题/组合数学)
CF1251F Red-White Fence现在给出了n个白板,m个红板,然后将其按照题目要求放成一排,要求最终周长为qi的方案数。首先因为有高度的单调性,所以我们可以直接把周长转化为红板的高度和白板的数量,然后因为红板数量很少,我们可以直接枚举。然后问题转化为选择n个白板的方案数,对于k个高度不同的白板可以发现方案数就是(nk)2k\binom{n}{k}2^k(kn)2k。如果高度相同有一个很巧妙的结论就是方案数为(n2k)\binom{n}{2k}(2kn)因为我们相当于对其构成了一个映原创 2021-02-05 19:30:51 · 114 阅读 · 0 评论 -
P5273 【模板】多项式幂函数 (加强版)
P5273 【模板】多项式幂函数 (加强版)这道题和原来的题目唯一区别就在于这道题没有限制F[0]=1,所以我们就不能直接取ln了,但是我们实际上有办法转换一下,让它最低次项为1,只需要除以最后一个非0项即可,然后最后再乘回去问题就解决了。...原创 2021-02-05 19:13:15 · 141 阅读 · 0 评论 -
P5748 集合划分计数(贝尔数/多项式)
P5748 集合划分计数求解从1到1e5的所有贝尔数,我们可以利用生成函数求解,就是利用指数型生成函数求解代码细节:首先虽然exe^xex代表全是1,但是多项式下面还有阶乘逆元的系数,然后乘完之后,我们还有乘上n!这样才是真正的答案NTT中的y=1LL*a[i+mid+j]*w%mod千万别忘!!!还有求逆里面点值乘积应该是i*2个点值。...原创 2021-02-04 18:14:55 · 220 阅读 · 0 评论 -
UVA12298 Super Poker II(多项式/背包问题)
UVA12298 Super Poker II这应该是最水的背包问题了吧然后有一个小问题就是这道题没有给模数,然后答案会爆int,所以我们需要MTT,然后开long long就好了,或者直接fft,有可能会爆精度。原创 2021-02-04 16:53:22 · 103 阅读 · 0 评论 -
CF773F Test Data Generation(倍增FFT/动态规划)
CF773F Test Data Generationhttps://www.luogu.com.cn/problem/CF773F这个题还是挺巧妙的,最后需要我们求解的实际上值域为a选择奇数个数最大数是奇数的方案数,然后这个东西显然包含了3个信息,值域、个数、最后一个数的奇偶性,然后我们发现个数这个信息是和背包类似,我们是可以卷积合并的所以Fa,0/1F_{a,0/1}Fa,0/1表示的就是值域为a最后一个数的奇偶性的生成函数,然后我们可以倍增MTT了。...原创 2021-02-04 16:41:42 · 157 阅读 · 0 评论 -
P4239 任意模数多项式乘法逆(多项式/ MTT)
P4239 任意模数多项式乘法逆这个题目简直就是毒瘤,不过还好我们可以使用vector封装要不然真的没法看,现在我们就会用vector封装MTT了,然后有一个代码细节就是这里的求逆还是在模意义下的,所以我们还是需要求逆。#include<bits/stdc++.h>#define LL long long#define FOR(i,a,b) for(register int i=a,end##i=b;i<=end##i;++i)#define REP(i,a,b) for(reg原创 2021-02-04 16:31:40 · 206 阅读 · 0 评论 -
CF623E Transforming Sequence(多项式/倍增fft/动态规划)
CF623E Transforming Sequence经典的倍增NTT题目,但是由于万恶的模数导致这道题变成了倍增MTT要求n个数前缀或严格递增的序列个数,一共有k位。然后我们考虑进行dp,然后我的思路就是fi,jf_{i,j}fi,j表示前i位在k位中有j位的方案数,然后可以利用组合数进行转移,但是这个状态设计不优秀,主要在于它包含了这j位在k位中哪些位置的信息,但是我们完全不需要,因为这j位和其他j位是完全等价的,我们本质上只需要考虑这j位,那么得到另一个状态设计gi,jg_{i,j}gi,j原创 2021-02-04 11:38:26 · 145 阅读 · 0 评论 -
CF755G PolandBall and Many Other Balls(多项式/倍增fft)
CF755G PolandBall and Many Other Balls倍增fft模版题这种问题关键在于两个状态转移,一个是单点加1,还有一个是乘2,这样我们就相当于拥有了二进制下的左移操作和加1操作,那么可以在O(logn)的时间内表示出任何一个数。然后对于满足这种做法的题目都需要有一些性质,关键在于区间合并的处理,类似于两个背包的合并,那么问题状态必须只和长度有关而和位置无关,这样才能倍增。...原创 2021-02-04 10:00:25 · 180 阅读 · 0 评论 -
P5641 【CSGRound2】开拓者的卓识(多项式)
P5641 【CSGRound2】开拓者的卓识https://www.luogu.com.cn/problem/solution/P5641经典的讨论贡献的题目,如果一层一层展开就太暴力了,我们直接考虑每个数被计算了多少次,那么应该是它的左边放k-1个左括号,右边放k-1个右括号的方案数,然后就可以组合数计算了,然后发现对于每个r它所对应的答案是一个卷积的形式,所以我们可以直接ntt一次就可以求出所有答案。...原创 2021-02-03 11:49:24 · 357 阅读 · 0 评论 -
P4389 付公主的背包(生成函数/多项式)
P4389 付公主的背包https://www.luogu.com.cn/problem/solution/P4389经典生成函数问题求解无限背包问题,我们可以将每个物品看作一个多项式,那么最后的结果就是这些多项式的卷积的系数,然后我们实际上就可以考虑分治NTT了,但是这样做的复杂度是O(nlog2n)O(nlog^2n)O(nlog2n),实际上我们有更好的方法。因为多项式乘法很慢但是加法很快,所以我们考虑对他们取ln,然后转化为加法,但是直接做ln还是很慢,但是这个式子比较特殊我们考虑推出它的l原创 2021-02-02 21:26:46 · 240 阅读 · 0 评论 -
P5488 差分与前缀和(多项式/生成函数)
P5488 差分与前缀和对于这道题需要我们快速对一个数列求解前缀和和差分,那么我们利用生成函数的知识,就可以知道实际上等价于乘一个多项式,然后我们就有了一个ln和exp的方法,然后比较简短的方法就是将其利用广义二项式定理展开,然后我们只需要前n项,但是对于这个k高达10233310^{2333}102333但是由lucas定理,处理这个组合系数,我们可以直接取模。广义二项式定理...原创 2021-02-02 15:24:49 · 254 阅读 · 0 评论 -
P4245 【模板】任意模数多项式乘法
P4245 【模板】任意模数多项式乘法https://www.luogu.com.cn/blog/AzusaCat/solution-p4245首先这类问题指的是对于一个非NTT模数,我们如何计算多项式乘法,对于NTT不容易找到单位根,对于FFT又会爆精度。方法1:三模数NTT寻找三个大模数最后CRT合并即可方法2:MTT将系数拆分为两部分,分别是M的倍数和余数,然后我们只需要对其分别处理即可,但是这样暴力的做一共需要7次FFT复杂度太高,我们通过一些数学技巧可以优化到4次。首先DFT时可以发原创 2021-02-02 14:42:19 · 237 阅读 · 0 评论 -
A. 树与路径(树论/多项式/分治FFT)
A. 树与路径首先考虑一个dp的方法,对于这种链划分的题目,有一个很重要的思想就是按照每个点的角度考虑,实际上链划分就是匹配问题,每个点只能出一条边和入一条边,所以我们拆点之后就是匹配,这也是网络流最少链覆盖的思路。这道题是在树上那么就有更好的性质,实际上对于每个点的状态就是将所连接的边进行匹配,并且每个点的状态是独立的,所以我们可以考虑一个暴力的dp,dpi,jdp_{i,j}dpi,j表示的是i这个点包含父亲边划分为j条链的方案数,然后可以得到转移如果没有链经过i,那么直接相乘,否则假设有k条原创 2021-02-01 22:26:25 · 146 阅读 · 0 评论 -
生成函数
生成函数基础公式:https://rqy.moe/Algorithms/generating-function/原创 2021-01-30 15:25:01 · 79 阅读 · 0 评论 -
P6295 有标号 DAG 计数(多项式指数函数对数函数/二项式反演/动态规划/生成函数)
P6295 有标号 DAG 计数https://www.luogu.com.cn/problem/P6295求解n个点的有标号弱联通DAG个数首先根据exp的组合意义,我们考虑指数型生成函数,那么我们先求出不要求弱联通的个数,然后ln回去就是弱联通的DAG个数。然后考虑进行dp,枚举入度为0的点的个数,然后得到一个递推式,但是实际上这里的枚举相当于是钦定,所以我们需要进行二项式反演。于是最后得到的式子指数上有一个乘法,我们可以通过组合数变换变成加法,于是这样就可以得到一个可以分治fft的形式,但是原创 2021-01-22 21:30:52 · 113 阅读 · 0 评论 -
P3723 [AH2017/HNOI2017]礼物(FFT)
P3723 [AH2017/HNOI2017]礼物https://www.luogu.com.cn/problem/solution/P3723经典的fft题目首先我们通过化简式子将问题转化为最大化∑i=1naibi\sum_{i=1}^na_ib_i∑i=1naibi然后看到这个式子我想到的是排序不等式,但是这里的ai和bi是没法自由移动排序的,所以我们需要用其他的方法。看到像这种两个数乘积的和,我们应该想到的是多项式乘法然后只需要将a序列反转得到的就是这个值,但是我们需要求解所有循环的最原创 2021-01-19 16:59:37 · 84 阅读 · 0 评论 -
单位根反演
单位根反演https://www.cnblogs.com/cjyyb/p/10838495.html原创 2021-01-16 16:13:39 · 84 阅读 · 0 评论 -
单位根反演
单位根反演https://www.cnblogs.com/cjyyb/p/10838495.html原创 2021-01-16 15:16:54 · 50 阅读 · 0 评论 -
多项式对数函数|指数函数(多项式)
多项式对数函数|指数函数这个思路就是先求导然后再积分,这样就可以得到一个式子,对于多项式对数函数,我们就可以直接求解了,然后对于多项式指数函数还需要使用分治fft。原创 2021-01-22 16:53:07 · 1008 阅读 · 0 评论 -
多项式求逆(多项式)
多项式求逆多项式求逆的思想在于倍增,每次求解在 mod x⌈x2⌉\bmod x^{\left \lceil \frac{x}{2} \right \rceil }modx⌈2x⌉下的多项式,然后每次通过平方可以求解得到在 mod xn\bmod x^{n}modxn的多项式。时间复杂度为O(nlogn)...原创 2021-01-30 23:31:35 · 63 阅读 · 0 评论