
多项式
文章平均质量分 91
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【清华集训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 · 759 阅读 · 0 评论 -
【LOJ6609】无意识的石子堆 加强版(容斥)(DP)
传送门题解:冷静一下我们知道加强版常数上是不允许任何类型的牛顿迭代出现的,目前知道以下两种思路上不同的做法。首先不难发现每行都必须有两个石子,所以讨论的重点肯定在列上面。做法 1:行当做一个点集,列当做一个点集,每个位置放的石子视为一条行向列连出的边。不难发现这玩意是个二分图,设左边有 nnn 个二度点,右边有 kkk 个二度点和 2(n−k)2(n-k)2(n−k) 个一度点,需要...原创 2020-04-22 08:47:15 · 569 阅读 · 0 评论 -
【THUPC2019】找树 / findtree(FWT)(矩阵树)
传送门题解:送分题。首先求生成树肯定是矩阵树。然后我们发现这里的卷积全部都是位运算。众所周知位运算卷积的DFT可以直接考虑每一位的操作,理解的话其实就是每位表示一个维度,然后各个维度上进行各自的DFT即可。该怎么搞怎么搞。代码:#include<bits/stdc++.h>#define ll long long#define re register#defi...原创 2020-04-15 15:56:26 · 633 阅读 · 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 · 267 阅读 · 0 评论 -
【NOI2019】机器人(区间DP)(记忆化搜索)(下降幂多项式)
传送门题解:首先考虑一个区间DP,枚举区间中的最大值最右边的位置,左边所有点不大于这个位置,右边所有点严格小于这个位置。容易发现这个位置只能是中间几个地方。设 dp[l][r][x]dp[l][r][x]dp[l][r][x] 表示考虑区间 [l,r][l,r][l,r],其中最大值为 xxx 的时候的合法方案数。容易注意到有转移:dp[l][r][x]=∑∣(r−i)−(i−l)∣...原创 2020-03-08 22:39:24 · 386 阅读 · 0 评论 -
【校内模拟】命题演算(FWT)(中缀表达式转后缀表达式)(模拟)
简要题意:你有两种可用的逻辑符号,分别是 →\rightarrow→ 和 ¬\neg¬ 。现在有 kkk 个独立的命题变元,和一个未知的公式 QQQ,你只知道 QQQ 当中总共个存在恰好 nnn 个上述逻辑符号,且仅会存在上述 kkk 个命题变元。有 mmm 个询问。每次给出一个公式 PPP,且 PPP 的若干部分可能被 QQQ 取代。询问有多少种可能的 QQQ 使得 PPP 永真。k≤...原创 2020-03-04 17:30:50 · 253 阅读 · 0 评论 -
【校内模拟】forest(多项式Exp)
简要题意:对总大小为 nnn ,且任意联通块大小不超过 aaa 的带标号无根树森林计数。由于是带标号拼接,直接算出来EGF然后Exp即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;...原创 2020-02-29 16:12:23 · 329 阅读 · 0 评论 -
【LOJ556】咱们去烧菜吧(多项式exp)
传送门和这道题是一样的,就不写题解了:付公主的背包代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace IO{ inline char gc(){ static cs int Rlen=1<<22|1;static cha...原创 2020-02-10 17:28:25 · 282 阅读 · 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 · 375 阅读 · 0 评论 -
【LOJ170】阶乘 mod 大质数
传送门题解:直接看这里吧:here代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs ll mod=1000391835649ll;inline ll add(ll a,ll b...原创 2019-11-19 16:29:04 · 538 阅读 · 0 评论 -
【模板】快速阶乘算法/阶乘模大质数(拉格朗日插值)(MTT)
洛谷板子传送门题解:首先,很显然地,我们需要一个低于O(n)O(n)O(n)的做法。考虑设多项式gd(x)=∏i=1d(x+i)g_d(x)=\prod\limits_{i=1}^d(x+i)gd(x)=i=1∏d(x+i)设s=⌊n⌋s=\lfloor\sqrt n\rfloors=⌊n⌋,则我们求出gs(0),gs(s),…,gs((s−1)s)g_s(0),g_s(s),\d...原创 2019-11-19 12:02:54 · 2382 阅读 · 0 评论 -
【校内模拟】ふでペン ~ボールペン~/毛笔与圆珠笔(状压DP)(矩阵快速幂)(BM算法)(多项式取模优化线性递推)
简要题意:对称不算同构,一共有 777 种四骨牌(玩过Tetris吗?)。现在给你一个 4∗n4*n4∗n 的矩形,你需要用四骨牌不重不漏地覆盖每个格子,问有多少种方案?对一个众所周知的模数取模。题解:其实应该猜想得到这种东西肯定是矩阵快速幂,既然是矩阵快速幂了,那就肯定有线性递推式。不知道有没有人和我一样无所畏惧尝试手推线性递推式存在线性递推式的临界其实就是指数增长到多项式增长。然...原创 2019-11-06 21:48:38 · 313 阅读 · 2 评论 -
【LOJ6183】看无可看(特征方程)(Lucas定理)(分治FFT)
传送门题解:还行的一道题。其实我主要是来复习FFT怎么写的,突然发现自己不会FFT只会NTT首先,如果注意到fff是一个二阶线性递推数列,这道题就已经做完了。考虑利用特征方程解出fff的通项公式。该数列特征方程为λ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...原创 2019-11-04 12:05:49 · 333 阅读 · 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 · 327 阅读 · 0 评论 -
【WC2019】数树(容斥原理)(生成函数)(树形DP)(多项式Exp)(数数神题)
传送门没弄明白前觉得毒瘤,弄明白之后,这TM就是数数神题啊。然而我这道题将近一半的代码都在写多项式全家桶。。。这道题的推导过程确实有点繁琐,但是没有办法啊,毕竟性质就是这么复杂啊。白云和白兔(laofu出题用的NPC),老虎和蒜头(whzzt出题用的NPC),真心有毒真的牛逼啊。。。题解:首先简单分析一下题目的那个限制:有公共路径的点颜色必须一样。很容易发现其实就是两棵树里面的公共...原创 2019-10-29 19:17:54 · 316 阅读 · 0 评论 -
【LOJ575】「LibreOJ NOI Round #2」不等关系(容斥)(CDQ分治)(NTT)
传送门题解:这个和PE上面一道叫permuted matrices的题差不多是一个套路。实际上按照’>'分割,要求每一段是一个上升序列,同时每一段段头必须大于上一段段尾。对这样的排列进行一个计数。并不好枚举那些限制满足,我们考虑枚举哪些限制不满足。考虑计算一个前缀的答案,发现实际上我们可以枚举第一个不满足限制的位置进行容斥。设答案为fif_ifi,cti=∑j=1i[sj==...原创 2019-10-11 12:27:28 · 238 阅读 · 0 评论 -
【ZJOI2019】开关(FWT)(背包DP)
传送门这道题目前知道的推导原理本质不同做法有两种,另一种是生成函数:here题解:设pip_ipi表示在单次操作中选择了第iii个开关的概率,设UUU表示所有开关的2n2^n2n种不同状态的集合,设集合幂级数F(x)=∑T⊆UfTxTF(x)=\sum_{T\subseteq U}f_Tx^TF(x)=∑T⊆UfTxT,其中fTf_TfT表示si=[i∈T]s_i=[i\in T]...原创 2019-10-11 10:12:54 · 306 阅读 · 0 评论 -
【校内模拟】calc(多项式快速插值)(多项式多点求值)(杜教筛)
其实感慨还是挺多的,从某种意义上来说这道题算是考场AC了吧,至于那个卡空间的10pts,感觉数组实现会过的轻松一点,vector的话空间常数略大。。。但是我是一个vector多项式党从来没有想过自己能够在考场上写出超过5.5KB的正确代码并AC,而且是精简不下去的那种。对自己来说算是一个里程碑吧,虽然说这次的基本上都是板子,但是有一堆板子是考场现推的,比如邻项快速插值的加速写法。题解:求S(...原创 2019-10-02 23:39:51 · 298 阅读 · 0 评论 -
【集训队作业2018】普通的计数题(牛顿迭代)(常微分方程)
传送门这种题想清楚之后基本上就是乱写都能AC。题解:做集训队作业,第一步永远都是模型转换。。。发现除了最后一个操作,其他操作产生的字符一定会被一个1操作消掉。可以转化成有根树上的父子关系。如果一个操作aaa被另一个操作bbb消除,则我们令bbb为aaa父亲。问题转化为满足下列条件的树的计数:标号为1到n,且标号满足大根堆性质。对于一个非叶节点,如果它有儿子是非叶节点,则它的叶子...原创 2019-09-20 15:52:44 · 513 阅读 · 0 评论 -
【UOJ#50】【UR #3】链式反应(常微分方程)(牛顿迭代)
传送门一般当牛顿迭代里面套了Exp的时候,能写分治FFT就写分治FFT,多半跑得比牛顿迭代快。 ——zxyoi分治FFT题解:https://blog.youkuaiyun.com/zxyoi_dreamer/article/details/101037455题解:首先将问题转化为如下形式:对满足如下条件的nnn个点的树计数,其父亲儿子的标号满足堆性质,非叶节点有c+2c+2c+2个儿...原创 2019-09-20 11:10:54 · 610 阅读 · 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 · 330 阅读 · 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 · 376 阅读 · 0 评论 -
【题目泛做】蛋糕(分治NTT)
题解:原题是THUPC2018蛋糕,然后这里扩展到了n维,没什么区别。核心思想就是一个块在其他维度上随便乱跑,在这个维度上也能随便乱跑。所以我们实际上要考虑的就是在每一维上出现0,1,2个面的方案数。每一维可以任意选择,所以直接分治NTT把每一维的生成函数乘起来就行了。代码:#include<bits/stdc++.h>#define ll long long#defi...原创 2019-09-19 16:03:53 · 308 阅读 · 0 评论 -
【LOJ6271】「长乐集训 2017 Day10」生成树求和 加强版(循环卷积)(矩阵树)
传送门题解:拆位是肯定要拆位的。拆位之后需要求的是这一位上三进制不进位加法结果为0,1,20,1,20,1,2的分别有多少。考虑矩阵树,由于矩阵树求的是边权乘积之和,我们将三进制不进位加法转换成长度为3的循环卷积,求出ω0,ω1,ω2\omega^0,\omega^1,\omega^2ω0,ω1,ω2的点值之后直接IFWT回来,其中ω\omegaω指三次单位根。由于ω2=−ω−1\om...原创 2019-09-16 09:50:57 · 569 阅读 · 0 评论 -
【集训队作业2018】青春猪头少年不会梦到兔女郎学姐(容斥)(分治FFT)
简要题意:给定 nnn 种颜色的球,第 iii 种颜色的球数量为 aia_iai 个,一种排列的贡献可以如下计算:先把这个序列首尾相连,然后把所有相邻且颜色相同的段拿出来,贡献为他们的长度之积,求所有排列的贡献和,原排列不同,首尾相连后相同的排列不算同一种。模 998244353998244353998244353。n≤1e5,∑ai≤2e5n\leq 1e5,\sum a_i\leq 2e...原创 2019-09-05 14:48:04 · 487 阅读 · 0 评论 -
【TC SRM 710 DIV1】 Hyperboxes(FMT)(搜索)
传送门题解:两个高维立方图形相交,当且仅当在每一维都相交。发现对于某个维度的相交情况,每一维是相同的。所以我们算出一维的情况后FMT即可。直接算很扯,考虑将所有端点排序,发现我们可以枚举端点的排列顺序。注意到有的端点可能重合,我们需要枚举哪些端点重合。也就是,我们需要直接枚举哪些端点是不一样的,分别在哪个组里面,然后对于一个端点的分组和偏序,我们爆搜有多少种划分方式满足它就行了。...原创 2019-09-03 14:14:44 · 241 阅读 · 0 评论 -
【LOJ547】「LibreOJ β Round #7」匹配字符串(常系数齐次线性递推)(Lucas定理)
传送门题解:首先我们知道这玩意可以直接DP。设fif_ifi表示长度为iii的串,以000结尾的合法方案数,则有转移fn=∑i=n−mn−1fif_n=\sum_{i=n-m}^{n-1}f_ifn=i=n−m∑n−1fi 很显然可以直接用线性递推搞,多项式取模的时候由于前面的系数全部都是111,可以记录一下前面的和优化到O(m)O(m)O(m)。上面的做法只能在mmm较小的时候...原创 2019-08-30 19:31:22 · 554 阅读 · 0 评论 -
【LOJ2463】「2018 集训队互测 Day 1」完美的旅行(线代黑科技)(牛顿恒等式)
传送门题解:这道题的原理部分请看这篇题解:https://blog.youkuaiyun.com/zxyoi_dreamer/article/details/100160980上面这篇题解里面的记号全部沿用。这里主要讲一下这道题怎么用线代黑科技优化常数。如果一个数列是线性递推数列,设其OGF为G(x)G(x)G(x),则存在两个有限多项式P(x),Q(x)P(x),Q(x)P(x),Q(x),使得...原创 2019-08-30 16:54:53 · 445 阅读 · 0 评论 -
【LOJ2463】「2018 集训队互测 Day 1」完美的旅行(BM算法)(多项式求逆)(FMT)
传送门题解:显然我们的想法是对所有集合算出它的超集的答案然后FMT回去。发现转移是一个矩阵乘法的形式,显然有线性递推式。直接用BM求出线性递推式可以算出走单次kkk步,愉悦值为iii的方案数。然后FMT得到单次走kkk步,愉悦值为iii的超集的方案数,记为g(i,k)g(i,k)g(i,k),设其OGF为Gi(x)G_i(x)Gi(x)。现在需要求总共走kkk步,愉悦值为iii的超...原创 2019-08-30 16:18:58 · 371 阅读 · 0 评论 -
【校内模拟】魅力(高维卷积)(循环卷积)(NTT)(三进制FWT)(数位DP)
题解:一不小心又吊了标算标算的三进制FWT用的是递归实现,复域用的是a+b3a+b\sqrt 3a+b3而不是a+bω3a+b\omega_3a+bω3,常数极大,跑了我用时的两倍不止首先推出数位DP的式子,有点麻烦不想写了。考虑题目的两个限制。第一个,集合中的数的出现次数必须是三的倍数,多维三进制循环卷积,好的三进制FWT。第二份,结果必须是kkk的倍数,kkk进制循环卷积,由于...原创 2019-08-29 20:29:03 · 636 阅读 · 0 评论 -
【BZOJ3451】【Tyvj1953】Normal(点分治)(NTT)
传送门题解:很妙的思路,考虑每个点对的贡献,实际上就是考虑其中一个点作为一个分治中心的时候另一个点是否能够产生贡献。要求就是所有它们路径上的所有点都还没有被选,概率为1dis(i,j)+1\frac{1}{dis(i,j)+1}dis(i,j)+11,直接上点分治算每种距离出现了多少次就行了,发现合并是一个卷积,直接用NTT就行了。代码:#include<bits/stdc++...原创 2019-08-26 19:20:53 · 211 阅读 · 0 评论 -
【8.22测试爆零记】
T1:wykres线段树分治+可回退化并查集。需要比较精细的实现,不然会被卡常。下面给出一个在时限的1/5内通过所有点的代码。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inlin...原创 2019-08-23 19:57:33 · 236 阅读 · 0 评论 -
【CodeChef-EASYEX】Easy exam(斯特林数)(FFT)
传送门题解:设xi,jx_{i,j}xi,j表示第iii次是否扔出了jjj,则我们要求的就是∏i=1L(∑j=1nxj,i)F\prod_{i=1}^L(\sum_{j=1}^nx_{j,i})^Fi=1∏L(j=1∑nxj,i)F的期望。考虑这个式子完全展开后的某一项,假设有zzz个xj,ix_{j,i}xj,i,则系数为SF,zz!S_{F,z}z!SF,zz!,所有的有...原创 2019-08-21 21:46:59 · 324 阅读 · 0 评论 -
【CF960G】Bandit Blues(斯特林数)(NTT)
传送门补档计划无题解。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int mod=998244353;inline int add(int a,int b){a+=b-mo...原创 2019-08-21 10:29:27 · 178 阅读 · 0 评论 -
【HackerRank-costly-graphs】【BZOJ5093】图的价值(第二类斯特林数)(NTT)
传送门题解:首先我们的需要一个答案的表达式。考虑111号点的度数,该度数能够出现在多少种图中,以及nnn个点等价。以下用mmm暂代原题意中的kkk。我们可以得到答案的表达式:Ans=n⋅2(n−12)∑i=0n−1(n−1i)imAns=n\cdot 2^{n-1\choose 2}\sum_{i=0}^{n-1}{n-1\choose i}i^mAns=n⋅2(2n−1)i=0∑...原创 2019-08-16 21:03:02 · 196 阅读 · 0 评论 -
【模板】【洛谷P5393】下降幂多项式转普通多项式(拉格朗日插值)(NTT)
传送门题解:首先对于下降幂多项式,其系数表达的点值EGF只需要乘上一个exe^xex。于是我们得到了若干个点值,直接份治拉格朗日插值即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout...原创 2019-08-15 19:58:36 · 290 阅读 · 0 评论 -
【模板】【洛谷P5383】普通多项式转下降幂多项式(NTT)(多项式多点求值)
传送门题解:似乎并没有什么比较好的科技能够O(nlogn)O(n\log n)O(nlogn)求这个东西。那O(nlog2n)O(n\log^2 n)O(nlog2n)也不算太坏。我们知道如果得到了多项式的点值EGF,可以直接乘上一个e−xe^{-x}e−x得到下降幂形式的系数表达。所以直接套一个多点求值就行了,复杂度瓶颈也就在这里。代码:#include<bits/s...原创 2019-08-15 19:17:11 · 276 阅读 · 0 评论 -
【LOJ6363】「地底蔷薇」(拉格朗日反演)(多项式全家桶)
传送门题解:代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constusing std::cerr;using std::cout;cs int mod=998244353;inline int add(int a,int b){return (a+=b...原创 2019-08-15 18:07:02 · 433 阅读 · 0 评论 -
【BZOJ3684】大朋友和多叉树(拉格朗日反演)
传送门题解:很显然地,我们考虑生成函数,由于必须儿子不能为空,所以显然000个点的方案数我们需要设置为000。设F(x)F(x)F(x)为合法的树的生成函数,则有:F(x)=x+∑i∈DFi(x)F(x)=x+\sum_{i\in D}F^i(x)F(x)=x+i∈D∑Fi(x)设G(x)=1−∑i∈DxiG(x)=1-\sum_{i\in D}x^iG(x)=1−∑i∈Dxi,则显...原创 2019-08-14 19:20:47 · 255 阅读 · 0 评论 -
【模板】【洛谷P5394】下降幂多项式乘法(NTT)
传送门题解:对于下降幂多项式f(x)f(x)f(x)考虑其点值生成函数:F(x)=∑i=0∞f(i)i!⋅xiF(x)=\sum_{i=0}^\infty\frac{f(i)}{i!}\cdot x^iF(x)=i=0∑∞i!f(i)⋅xi考虑一个下降幂单项式xn‾x^{\underline{n}}xn的点值生成函数:∑i=n∞i!(n−i)!i!xi=xnexp(x)\sum_...原创 2019-08-13 21:54:06 · 246 阅读 · 0 评论