多项式
FSYo
我不去想是否能够成功,
既然选择了远方,
便只顾风雨兼程
展开
-
Codeforces Round 641 F2. Slime and Sequences (生成函数)(拉格朗日反演)
传送门注意到好的序列到一个排列是一个双射,在序列上的数 apia_{p_i}api 等于 iii 前方的小于号个数加一,其中小于号指的是相邻两个数的大小关系,下面我们对这个排列进行计数fi,jf_{i,j}fi,j 表示长度为 iii 至少 jjj 个 <<< 的个数,恰为斯特林数 Si,i−jS_{i,i-j}Si,i−j,每一组内钦定递增gi,jg_{i,j}gi,j 表示正好 jjj 个 <<< 的个数(可以 O(n2)O(n^2)O(n2)原创 2020-05-13 17:51:30 · 656 阅读 · 0 评论 -
【省选模拟】「THUPC2018」淘米神的树(多项式多点求值)
传送门将 a,ba,ba,b 的路径拿原创 2020-04-30 22:26:04 · 217 阅读 · 0 评论 -
【P5850】calc 加强版(生成函数)(多项式)
传送门题意:有 (kn)\binom{k}{n}(nk) 种情况,每种情况是选出来的数之积,求 n∈[1,m]n\in[1,m]n∈[1,m] 的每种情况的值那么就是求 ∏(1+ix)\prod(1+ix)∏(1+ix) 的 [1,n][1,n][1,n] 项系数,那么用 ln,exp\ln,\expln,exp 来转换,即exp(∑ln(1+ix))\exp(\sum \l...原创 2020-04-10 17:41:04 · 190 阅读 · 0 评论 -
【省选模拟】20/04/09 黑暗(生成函数)(多项式)
第一次考场自己搞生成函数,算是进步吧好像可以用斯特林推,不过有一种无脑的方法题意:nnn 个点的所有无向图,每个图的贡献是连通块大小的 mmm 次方,多次询问 n≤3e4,m≤15n\le 3e4,m\le 15n≤3e4,m≤15先预处理 F(x)F(x)F(x) 表示无向联通图的 EGFEGFEGF设 Gm(x)G_m(x)Gm(x) 为答案的 EGFEGFEGF,那么有G...原创 2020-04-09 21:59:19 · 188 阅读 · 0 评论 -
【省选模拟】20/04/07 考试 (组合意义)(生成函数)(多项式)
有 nnn 个独立的变量(实数)xi∈[0,ai]x_i\in[0,a_i]xi∈[0,ai],求 (∑xi)m(\sum x_i)^m(∑xi)m 的期望直接考虑组合意义:就是 nnn 个里面任选 mmm 个乘起来,先不考虑顺序,那么我们可以枚举每个 xix_ixi 被选的次数,基于此构造 EGFEGFEGFFi(x)=∑j≥0∫0aitjdtj!xt=∑j≥0aij+1(j...原创 2020-04-07 18:48:17 · 303 阅读 · 0 评论 -
【省选模拟】20/04/07 亲 (推式子)(生成函数)(多项式)(拉格朗日插值)
题意:求 ∑i=1n(ni)Qi(∑j=1ijk)\sum_{i=1}^n\binom{n}{i}Q^{i}(\sum_{j=1}^ij^k)∑i=1n(in)Qi(∑j=1ijk),n≤1e9,k≤3e3,Q≤1e9n\le 1e9,k\le3e3,Q\le 1e9n≤1e9,k≤3e3,Q≤1e9发现 3 个大神都有不同的神仙方法,只有我什么都不会无敌的 ldxldxldx...原创 2020-04-07 17:59:58 · 319 阅读 · 0 评论 -
MTT
令 Ai=ai∗T+biA_i=a_i*T+b_iAi=ai∗T+bi,Bi=ci∗T+diB_i=c_i*T+d_iBi=ci∗T+di现在要求出 ac,bd,ad,bcac,bd,ad,bcac,bd,ad,bc考虑令 xi=ai+ibi,yi=ai−ibix_i=a_i+ib_i,y_i=a_i-ib_ixi=ai+ibi,yi=ai−ibi对 xxx 做一遍 ...原创 2020-04-01 15:16:53 · 183 阅读 · 0 评论 -
【省选模拟】Fac (生成函数)(组合意义)(拉格朗日反演)(倍增)(多项式全家桶)
传送门没有题解是真的秀,连蒙带猜搞了一天结果今天早上才写完,不过还好有 3 个神仙学长助力不知道题解是怎么想到的,所以只好直接说结论了经观察发现可以先求出 (iki−1)1i\binom{ik}{i-1}\frac{1}{i}(i−1ik)i1,这个在 k=2k=2k=2 的时候是卡特兰数也就是二叉树的个数考虑将其扩展为 kkk 叉树,即证 f(x)=xf(x)k+1f(x)=...原创 2020-03-29 09:44:37 · 398 阅读 · 3 评论 -
【LOJ6569】仙人掌计数(生成函数)(多项式全家桶)(牛顿迭代)
传送门题意:nnn 个点带标号的仙人掌个数求一个有根的个数,令其 EGFEGFEGF 为 f(x)f(x)f(x),那么一个根可以在多个环,或是只连出去一条边,对于环上的点,是以这个点为根的有序拼接(这样就不用管环上的顺序了),但是直接无序拼接的话正反会被算一遍,然后我们将每个环的贡献 exp\expexp 起来可以得到f(x)=xexp(f(x)+∑i≥2fi(x)2)=xexp(...原创 2020-03-17 23:25:44 · 539 阅读 · 0 评论 -
【集训队作业2018】普通的计数题(牛顿迭代)(微分方程)(多项式全家桶)
传送门首先完成模型转换:一个 1 操作的点向消去的连边,那么有可能连的全部是 0 边,或是有一些 1 边和 0 边,发现这个就是一棵树,结点满足大的在上,如果一个点的儿子全是叶子,那么儿子个数 ∈B\in B∈B,否则叶子儿子个数 ∈A\in A∈A我们直接暴力上 EGFEGFEGF,树的 EGFEGFEGF 记为 F(x)F(x)F(x),集合的 EGFEGFEGF 记为 A,BA,BA,...原创 2020-03-13 19:29:02 · 373 阅读 · 0 评论 -
【LOJ #6363】「地底蔷薇」(拉格朗日反演)(多项式全家桶)
传送门神题 orzorzorz首先可以求出 H(x)H(x)H(x) 表示无向联通图个数,并且我们为每个图定一个根考虑断掉根所在的若干个点双的所有边,我们搞出一个连通块的 EGFEGFEGF 再 exp\text{exp}exp 就可以得到若干个点双,考虑断掉点双内所有边后剩下的联通块个数就是点双大小(除根),于是我们定义 bib_ibi 为大小为 i+1i+1i+1 的点双的方案数,...原创 2020-03-13 15:15:49 · 348 阅读 · 0 评论 -
史上最菜 FFT 讲解
回想到学了好多次 FFT 第一次有感觉的时候,半懵半懵地写了板子再到现在能熟练背诵 NTT 的板子,发现对 FFT 最初的原理渐渐淡漠了好在有些东西越学越明白,于是来谈一谈FFT,快速傅里叶变换例:给出多项式 A(x),B(x)A(x),B(x)A(x),B(x) 求 A(x)∗B(x)A(x)*B(x)A(x)∗B(x),n≤1e5n\le 1e5n≤1e5令 A(x)A(x)A(x...原创 2019-12-27 20:10:12 · 290 阅读 · 3 评论 -
NOI 模拟 2019 Contest#18 A 【清华集训2016】如何优雅地求和 (数学)(多项式转下降幂)
传送门按照题目给的启发,考虑证一下np=∑i=0ni(ni)pi(1−p)n−inp=\sum_{i=0}^ni\binom{n}{i}p^i(1-p)^{n-i}np=i=0∑ni(in)pi(1−p)n−i=∑i=1nn(n−1)!(n−i)!(i−1)!pi(1−p)n−i=\sum_{i=1}^nn\frac{(n-1)!}{(n-i)!(i-1)!}p^i(1-p)^{n-i}...原创 2019-12-19 21:05:18 · 274 阅读 · 0 评论 -
P4233 射命丸文的笔记(组合数学)(分治NTT)(多项式求逆)
传送门考虑先求两个东西:一个是所有竞赛图的哈密顿回路个数一个是存在哈密顿回路的竞赛图个数第一个,考虑一个哈密顿回路,有 (n−1)!(n-1)!(n−1)! 种走法,对每一种走法统计它出现多少次,其它边随便填,那么个数就是 (n−1)!∗2(n2)−n(n-1)!*2^{\binom{n}{2}-n}(n−1)!∗2(2n)−n第二个,发现如果存在哈密顿回路的话一定只有一个强连通...原创 2019-12-06 18:32:52 · 221 阅读 · 0 评论 -
HDU6426 Alkane (生成函数)(牛顿迭代)(Burnside)(容斥)
传送门第一问:求每个点度数不超过 4 的无根树数量第二问:求每个点儿子数不超过 3 的有根树数量首先第二个问相对简单,移步这里 传送门其次写这道题之前应先膜拜 https://blog.csdn.net/zxyoi_dreamer/article/details/97561441假设第一个问求出的东西的生成函数是 A(x)A(x)A(x),我们开始推导我们发现首先可以分为两个大类分别...原创 2019-12-04 20:55:12 · 311 阅读 · 0 评论 -
LOJ6183 看无可看 (分治FFT)(生成函数)(特征方程)
传送门首先题目给出的递推式的特征方程是 λ2−2∗λ−3=0\lambda^2-2*\lambda-3=0λ2−2∗λ−3=0,两个特征根分别是 λ1=3,λ2=−1\lambda_1=3,\lambda_2=-1λ1=3,λ2=−1然后第 n 项可以表式为 C1∗λ1n+C2∗λ2nC_1*\lambda_1^n+C_2*\lambda_2^nC1∗λ1n+C2∗λ2n对上面两...原创 2019-12-04 20:33:16 · 234 阅读 · 0 评论 -
「LibreOJ β Round #7」匹配字符串 (线性递推)(组合数学)(范围分块)(DP)
传送门首先有朴素的 dpdpdp,令 f[i]f[i]f[i] 为强制 i 选 0 的合法串的方案数,枚举最后一段 1 的起始位置f[i]=∑j=i−mi−1f[j]f[i]=\sum_{j=i-m}^{i-1}f[j]f[i]=∑j=i−mi−1f[j]发现可以线性递推,于是有了一个复杂度为 O(mlog(m)log(n))O(mlog(m)log(n))O(mlog(m)log(n))...原创 2019-12-04 20:28:22 · 224 阅读 · 0 评论 -
「2018 集训队互测 Day 1」完美的旅行 (容斥)(BM)(多项式)
传送门假设我们已经求出一条路径与为 xxx 的方案数,发现多条路径放在一起并不好做、考虑记录超集,f[a][x]f[a][x]f[a][x] 表示与是 aaa 的超集,走了 xxx 步的方案数令 Fa(x)F_a(x)Fa(x) 为它的生成函数,设 Ga(x)G_a(x)Ga(x) 为任意多条路径的生成函数,枚举条数Ga(x)=1+Fa(x)+Fa(x)2+...=11−Fa(x)G_...原创 2019-12-04 20:03:42 · 227 阅读 · 0 评论 -
WOJ4680 魅力(数位DP)(三进制 FWT)(FFT)
传送门首先可以写成数位 dpdpdp 的形式f[i+1][S′][(j∗10+d)%K]=f[i−1][S][j]f[i+1][S'][(j*10+d)\% K]=f[i-1][S][j]f[i+1][S′][(j∗10+d)%K]=f[i−1][S][j]SSS 的转移为三进制不进位加法考虑倍增,将两个序列拼接起来f[i][S][j]=∑A+B=i,S1⨂S2=S,x∗10B+y=j...原创 2019-12-04 19:54:00 · 314 阅读 · 0 评论 -
LOJ 6538 烷基计数 (生成函数)(Burnside)(牛顿迭代)
传送门题意:求儿子数不超过 3 的有根树个数axa_xax 表示有 x 个碳的方案树直接上生成函数,A(x)=∑aixiA(x)=\sum a_ix^iA(x)=∑aixi我们可以先强行钦定有 3 个儿子如果只有一个或两个的话相当于那个儿子的 sizesizesize 为 0题目要求不同构,考虑用 BurnsideBurnsideBurnside 来计数考虑同构的总方案数为每种置...原创 2019-12-04 15:52:11 · 656 阅读 · 0 评论 -
CF1010F Tree(链分治)(分治FFT)(DSU on tree)
CF1010F Tree首先这道题不是二叉树也可以做题目要求一个点的权值必须比所有儿子都大,于是可以转换为对每一个点分配一个 [0,x][0,x][0,x] 的权值,最终权值是子树的和这个的方案数只与集合大小有关为 (x+S−1S−1)\binom{x+S-1}{S-1}(S−1x+S−1)于是问题转换为统计树上大小为 kkk 的连通块个数已经可以 n2n^2n2 dpdpdp 了...原创 2019-12-02 23:06:41 · 610 阅读 · 0 评论 -
多项式小结 (求逆)(ln)(exp)(除法)(多点求值)(快速插值)(任意模数NTT)
多项式求逆f(x)∗g(x)=1(mod xn)f(x)*g(x)=1(mod\ x^n)f(x)∗g(x)=1(mod xn)先求出 f(x)∗g(x)′=1(mod xn2)f(x)*g(x)'=1(mod\ x^{\frac{n}{2}})f(x)∗g(x)′=1(mod x2n)然后有 f(x)∗g(x)′=f(x)∗g(x)(mod&nbs...原创 2019-11-07 19:15:05 · 688 阅读 · 0 评论 -
CSP-S 模拟 毛笔与圆珠笔 (状压DP)(搜索打表)(线性递推)(Berlekamp-Massey )
题意:给定一个4∗n4*n4∗n的矩阵,可以用任意面积为444的连通图形覆盖完美覆盖的方案个数,对998244353998244353998244353取模,n≤1e9n\le 1e9n≤1e9首先会想到状压 dpdpdp,因为最坏情况就是一个横着的长为 4 的插到前面这样的话需要压 3 列的状态然后容易想到先把状态的转移打表打出来然后你发现讨论所有 4 联通块已经让你头疼了,还要枚...原创 2019-11-07 11:16:33 · 292 阅读 · 0 评论 -
Berlekamp-Massey 算法
膜拜 ldxoi用途:首先我们有一种很快的方法线性递推可以求一个递推式的第 nnn 项但是我们不知道这个递推式,只知道这个序列的前面几项这个时候可以通过 BMBMBM 算法解出最短递推式算法流程:对于一个 nnn 项的序列 A={a1,a2,...,an}A=\{a_1,a_2,...,a_n\}A={a1,a2,...,an},和一个 mmm 项的序列 R={r1,r2...原创 2019-11-07 09:23:19 · 720 阅读 · 0 评论 -
NOI2017 泳池 [DP] [线性递推]
传送门第一步转换:求恰好为 k 的转换成 ≤k\le k≤k 的减去 ≤k−1\le k-1≤k−1 的考虑 dpdpdp,令 fif_{i}fi 表示宽度为 iii 的答案枚举第一个断点到iii 的长度,fi=∑j=0i−1fi−j−1∗gj∗(1−p)f_i=\sum_{j=0}^{i-1}f_{i-j-1}*g_j*(1-p)fi=∑j=0i−1fi−j−1∗gj∗(1−p)...原创 2019-10-13 18:15:06 · 190 阅读 · 0 评论 -
【模板】线性递推
求 fn,fn=∑i=1kaifn−if_n,f_n=\sum_{i=1}^ka_if_{n-i}fn,fn=∑i=1kaifn−ik≤3e4,n≤1e9k\le 3e4,n\le 1e9k≤3e4,n≤1e9首先暴力的矩阵乘是 k3lognk^3lognk3logn的引入概念:特征多项式f(λ)=∣λI−A∣f(\lambda)=|\lambda I-A|f(λ)=∣λI−A∣...原创 2019-10-13 16:55:12 · 169 阅读 · 0 评论 -
暑假集训 ---- FFT&FWT
「THUPC 2017」小 L 的计算题 / Sum构造生成函数F(x)=∑i=0nfi∗xiF(x)=\sum_{i=0}^n f_i*x^iF(x)=∑i=0nfi∗xi则有 F(x)=∑i=0nfi∗xi=∑i=0nxi∑j=1najiF(x)=\sum_{i=0}^n f_i*x^i=\sum_{i=0}^n x^i \sum_{j=1}^n a_j^iF(x)=∑i=0nfi...原创 2019-09-29 21:38:01 · 216 阅读 · 0 评论 -
HackerRank costly graphs [二类斯特林]
传送门因为每个点是独立的,我们可以枚举每个点的度数考虑用斯特林数化简 i ^ m#include<bits/stdc++.h>#define N 500050using namespace std;typedef long long ll;#define poly vector<ll>#define C 18const int Mod...原创 2019-08-08 23:44:34 · 230 阅读 · 0 评论 -
P4389 付公主的背包 [生成函数+多项式Exp]
传送门直接弄出每一种物品的生成函数几个F乘起来不好做,我们考虑先求 ln,然后加起来,再 exp 回去设x ^ v 乘进去相当于平移一下然后可以枚举每一个 v,然后调和级数处理出 g(x),然后求 exp 就可以了#include<bits/stdc++.h>#define N 1000050using namespace std;t...原创 2019-08-07 16:07:04 · 179 阅读 · 0 评论 -
[BZOJ3684] 大朋友和多叉树 [生成函数+拉格朗日反演]
传送门如果两个多项式F(x),G(x) 满足常数项均为 0,一次项均不为 0,并且G(F(x)) = x,那么称F(x)与G(x) 互为复合逆有结论 :关于本题,答案的生成函数为另集合 S 的生成函数为 H(x),那么有令 G(x) = x - H(x) , 那么 G(F(x)) = x然后就可以多项式求逆+快速幂#incl...原创 2019-08-14 20:48:24 · 198 阅读 · 0 评论 -
[CTSC2010]性能优化 [混合基FFT]
传送门先来复习一下普通的FFT对于混合基FFT, 有然后就可以分治了,rev 数组的预处理有一些奇葩#include<bits/stdc++.h>#define N 2000050using namespace std;typedef long long ll;int read(){ int x = 0, f = 1; char ch = 0; w...原创 2019-08-30 23:09:19 · 1106 阅读 · 0 评论 -
FFT模板
刚学了FFT,感觉迷迷糊糊的FFT的主要思想:函数表达 ---- 点表达 ----- 点值相乘 ----- 还原为函数先留个坑,现在刚刚背完代码,以后学的时候再理解#include<bits/stdc++.h>#define N 5000050using namespace std;const double PI = acos(-1.0);struct C...原创 2019-02-03 23:13:32 · 152 阅读 · 0 评论 -
CF528D Fuzzy Search [FFT]
传送门首先预处理一个 0 / 1数组, 表示这个位置能不能与 A / C / G / T 匹配由于字符集很小, 所以我们可以一个字符一个字符处理我们将 B 串是当前枚举字符的位置赋成1, 那么两个都是1就可以匹配于是 FFT 将它们卷起来, 并且将4次处理的多项式相加, 如果某一位系数为 m, 那么每个字符都匹配上了#include<bits/stdc++.h>...原创 2019-07-09 23:02:21 · 238 阅读 · 0 评论 -
CF632E Thief in a Shop [ 生成函数 + NTT ]
传送门生成函数好巧妙啊, 如果能买到, 系数为1, 否则为0所以最开始的生成函数就是, 然后自己跟自己卷k次就可以了NTT 用 998244353 和 1004535809 做两次, 就可以避免冲突#include<bits/stdc++.h>#define N 1050000using namespace std;typedef long long ll;...原创 2019-07-09 23:05:32 · 275 阅读 · 0 评论 -
CF1096G Lucky Tickets [生成函数+NTT]
传送门我们如果能求出 n/2 个数能组合出的某个数的方案数 v, 那么v^2 就是这个数的贡献发现可以用生成函数, 类似下面这样构造组合成9的方案数就是2, 然后NTT就可以了#include<bits/stdc++.h>#define N 4000050using namespace std;int n, k, up, bit, rev[N];typed...原创 2019-07-11 17:57:20 · 378 阅读 · 1 评论 -
「THUPC 2017」小 L 的计算题 / Sum [生成函数 + 多项式Ln]
传送门直接构造答案的生成函数然后可以分治 FFT + 多项式 Ln#include<bits/stdc++.h>#define N 1600050using namespace std;typedef long long ll;int read(){ int cnt = 0, f = 1; char ch = 0; while(!isdigit(ch)){...原创 2019-08-08 23:26:03 · 198 阅读 · 0 评论