
多项式
romiqi_new
这个作者很懒,什么都没留下…
展开
-
多项式算法模板
讲解link附全套模板:div除法,取模#include<bits/stdc++.h>#define poly vector<int>#define ll long long#define mod 998244353using namespace std;inline int read(){ int res=0,f=1;char ch=getchar();...原创 2019-07-26 11:49:19 · 153 阅读 · 0 评论 -
[luogu4389][生成函数][NTT]付公主的背包
luogu4389考虑OGF,ans=[xn]∏i=1n(11−xi)aians=[x^n]\prod_{i=1}^n(\frac{1}{1-x^i})^{a_i}ans=[xn]∏i=1n(1−xi1)ai,其中aia_iai表示大小为iii的物品的个数看到这种一般想到用exp:∏i=1n(11−xi)ai\prod_{i=1}^n(\frac{1}{1-x^i})^{a_i}i=...原创 2019-09-17 21:45:27 · 195 阅读 · 0 评论 -
[luogu5396][NTT][多项式][斯特林数]模板:第二类斯特林数·列
luogu5396好像可以倍增搞到一个log我写的两个log的分治NTT把要求的弄成OGF,考虑第二类斯特林数的递推式Smx=xSm−1(x)+mxSm(x)S_m{x}=xS_{m-1}(x)+mxS_m(x)Smx=xSm−1(x)+mxSm(x)Smx=x1−mxSm−1(x)S_m{x}=\frac{x}{1-mx}S_{m-1}(x)Smx=1−mxxSm−1(x)...原创 2019-09-12 12:03:03 · 175 阅读 · 0 评论 -
[luogu5409][NTT][多项式][斯特林数]模板:第一类斯特林数·列
luogu5409算了懒得写了Code:// luogu-judger-enable-o2#include<bits/stdc++.h>#define pb push_back#define poly vector<int>#define mod 167772161using namespace std;inline int read(){ int re...原创 2019-09-12 11:56:11 · 169 阅读 · 0 评论 -
[luogu5395][NTT][多项式][斯特林数]模板:第二类斯特林数·行
luogu5395这个还要简单点xn=∑i=1nSn,ixi‾x^n=\sum_{i=1}^nS_{n,i}x^{\underline i}xn=∑i=1nSn,ixi二项式反演,把下降幂拆开,然后发现是个卷积,然后就完了Code:// luogu-judger-enable-o2#include<bits/stdc++.h>#define mod 16777216...原创 2019-09-12 11:53:43 · 145 阅读 · 0 评论 -
[luogu5408][NTT][多项式][斯特林数]模板:第一类斯特林数·行
luogu5408如果当前的nnn为奇数,就递归求第n−1n-1n−1行如果为偶数,则x2n‾=xn‾(x+n)xn‾x^{\underline {2n}}=x^{\underline {n}}(x+n) x^{\underline {n}}x2n=xn(x+n)xn则可以先求xn‾x^{\underline {n}}xn然后还原Code:// luogu-judger-enab...原创 2019-09-12 11:49:02 · 193 阅读 · 0 评论 -
[LOJ3120][生成函数][NTT][二项式定理]CTS2019:珍珠
LOJ3120真是道毒瘤题考虑一个权值出现的次数,如果为奇数那就会浪费一个瓶子,所以要求出现奇数次的权值不超过n−2mn-2mn−2m个我们写出出现次数为奇数的权值的生成函数ex−e−x2\frac{e^x-e^{-x}}{2}2ex−e−x,为偶数的权值的生成函数ex+e−x2\frac{e^x+e^{-x}}{2}2ex+e−x,可以发现ans=n!∑k=0n−2m(ex+e−x2+...原创 2019-08-16 11:37:36 · 233 阅读 · 0 评论 -
[LOJ2409][生成函数][NTT]THUPC2017:小L的计算题
LOJ2409设F(x)F(x)F(x)为fff的OGF则F(x)=∑i=0∞f[i]xiF(x)=\sum_{i=0}^{\infin}{f[i]x^i}F(x)=i=0∑∞f[i]xi=∑i=0∞xi∑j=1naji=\sum_{i=0}^{\infin}{x^i\sum_{j=1}^n{{a_j}^i}}=i=0∑∞xij=1∑naji=∑j=1n∑i=0∞(x∗aj)i=\...原创 2019-08-07 19:01:49 · 265 阅读 · 0 评论 -
[BZOJ3684][生成函数][拉格朗日反演]大朋友和多叉树
BZOJ3684设F(x)F(x)F(x)为树的生成函数,[xi][x^i][xi]表示iii个叶子的满足条件的树的数量则由题意可得出:F(x)=∑i∈DF(x)i+xF(x)=\sum_{i∈D}F(x)^i+xF(x)=∑i∈DF(x)i+x设C(x)C(x)C(x)为集合D的生成函数,则F(x)=C(F(x))+xF(x)=C(F(x))+xF(x)=C(F(x))+x仍然不好求,...原创 2019-08-14 14:11:25 · 145 阅读 · 0 评论 -
[UOJ450][单位根反演]集训队作业2018:复读机
UOJ450d≤3d\le3d≤3,所以分类讨论d=1d=1d=1就很简单了,快速幂即可如果d≠1d=\not1d≠1,考虑生成函数F(x)=∑i=0∞[d∣i]xii!F(x)=\sum_{i=0}^{\infin}{[d|i]\frac{x^i}{i!}}F(x)=i=0∑∞[d∣i]i!xi单位根反演:F(x)=∑i=0∞1d∑j=0d−1(ωdi)jxii!F(x)=\s...原创 2019-08-07 14:03:34 · 186 阅读 · 0 评论 -
[BZOJ3625][生成函数][NTT]小朋友与二叉树
BZOJ3625考虑二叉树的计数,一个二叉树是由根节点和左右子树组成的,并且左右子树都是二叉树根据生成函数的应用中树的计数我们可知,两树形态一样的时候可以共用一个生成函数所以我们可以用F(x)F(x)F(x)表示二叉树的生成函数,则我们还需要一个G(x)G(x)G(x)表示一个点的生成函数只需要一个点,为什么还要点的生成函数?这个点的权值会影响最终的答案,所以G(x)G(x)G(x)表示...原创 2019-08-06 19:30:00 · 192 阅读 · 0 评论 -
[BZOJ4555][斯特林数][NTT]TJOI && HEOI2016:求和
BZOJ4555要求∑i=0n∑j=0iS(i,j)∗2j∗j!\sum_{i=0}^n{\sum_{j=0}^i}S(i,j)*2^j*j!i=0∑nj=0∑iS(i,j)∗2j∗j!即∑i=0n∑j=0nS(i,j)∗2j∗j!\sum_{i=0}^n{\sum_{j=0}^n}S(i,j)*2^j*j!i=0∑nj=0∑nS(i,j)∗2j∗j!根据第二类斯特林数的展开式有S...原创 2019-08-08 19:28:53 · 220 阅读 · 0 评论 -
[BZOJ4228][生成函数][NTT]Tibbar的后花园
BZOJ4228考虑合法的连通块,一个点的出度必须小于等于2,否则以这个点为中心,会出现一个到中心距离相等的四个点组成的图所以一个连通块必须是链或者长度不为3的倍数的环本题是有标号计数,考虑EGF:line=∑i≥2xi2line=\sum_{i\ge2}\frac{x^i}{2}line=i≥2∑2xicircle=∑i≥4&&i%3!=0xi2ic...原创 2019-08-06 11:56:24 · 255 阅读 · 0 评论 -
[斯特林数][NTT][HDU4372][WC2019雅礼集训]Count the buildings
HDU4372考虑最高的点,他左边有x-1个极高点,右边有y-1个极高点一个极高点和下一个极高点(不包含下一个)这一部分可以看做一个圆排列(不是排列因为极高点的位置固定),那么就是要求n−1n-1n−1个数分成x+y−2x+y-2x+y−2个圆排列的方案数,即sn−1,x+y−2s_{n-1,x+y-2}sn−1,x+y−2然后考虑这些圆排列要选x-1个放到最高点左边,这里只用选出来就行了...原创 2019-08-08 11:52:59 · 128 阅读 · 0 评论 -
[luogu5487][BM]模板:线性递推+BM算法
luogu5487来做一发BM的板子BM看的cz_xuyixuan的blog还有zzq的blogCode:#include<bits/stdc++.h>#define pb push_back#define eps 1e-8#define ll long long#define int long long#define mod 998244353using nam...原创 2019-08-07 23:27:09 · 230 阅读 · 0 评论 -
20190918CSP-S模拟题解
T1:一张n个点的无向图,求出经过每个点的最小环n≤300n\le300n≤300 m≤40000m\le40000m≤40000暴力是拆边然后跑dij,正解就是拆点可以枚举每个点,做一个最短路树,然后枚举非树边更新答案就过了。。。std是分治Floyd,就在每次分治的时候暴力向Floyd矩阵里插...原创 2019-09-19 08:17:25 · 619 阅读 · 0 评论