快速傅里叶变换
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[学习笔记]快速傅里叶变换 FFT
屯板子#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>#define N 2621450#define pi P_Pusing namespace std;const double pi=acos(-1);struct E{ double x,y;原创 2017-12-26 15:14:51 · 774 阅读 · 0 评论 -
「PKUWC2018」LOJ #2541. 猎人杀 - 容斥 - 分治NTT
题目大意:给你nnn个球,每个球有个权重wiw_iwi,每次加权扔掉一个球,问最后一号球是最后一个被扔出去的概率。∑i=1nwi≤105,∀i∈[1,n],wi&gt;0\sum_{i=1}^n w_i\le10^5,\forall i\in[1,n],w_i&gt;0∑i=1nwi≤105,∀i∈[1,n],wi>0。题解:首先考虑容斥(本质上是Min−MaxM...原创 2018-10-04 21:19:04 · 306 阅读 · 0 评论 -
几何 - 组合数学 - 分治FFT - 分块
题目大意:有n个正四面体,第k个边长是k个木棍。想要摧毁第k个正四面体,当且进当移除了至少k个正四面体,以及四个结点至少是两条边的段点。现在要摧毁至少m个正四面体,问方案数,不考虑顺序和空间同构,n≤60000,p=105+3n\le60000,p=10^5+3n≤60000,p=105+3。p为模数。题解:首先摧毁第k(k&amp;amp;gt;1)k(k&amp;amp;gt;1)k(k&amp;gt;1)个的...原创 2018-10-07 14:57:51 · 391 阅读 · 0 评论 -
竞赛图强连通分量大小幂和计数 - 组合计数 - 多项式
题目大意:求所有nnn个点带标号竞赛图的强连通分量大小的kkk次方之和的和,对998244353599824435359982443535模数取模。n≤105,k≤998244352n\le10^5,k\le 998244352n≤105,k≤998244352。题解:竞赛图缩点后拓扑序唯一(其实是链状结构然后剩下的两端不在同一个强连通分量里面的边的方向是确定的)。设gng_ngn表示答案...原创 2018-10-17 14:57:46 · 872 阅读 · 0 评论 -
alpha - 分治NTT - 线段树
题目大意:有[1,1e9]的数轴,n次操作每次给一个区间[Li,Ri]的数有pi的概率+1,1-pi的概率不变。问最后等于k的数字期望有多少个。n≤5×104n\le5\times10^4n≤5×104题解:问题等价于区间乘以一个一次式,最后对每个位置求k次项系数。离散化后线段树,等价于每次从根到叶节点的式子乘起来在乘个叶节点对应的区间长度取k次项系数求和。但这么做复杂度是错的,考虑反过来...原创 2018-12-12 09:55:03 · 360 阅读 · 0 评论 -
game - 期望 - 点分治 - FFT
题目大意:给一棵树,每次随机选择一个点,将其所在连通块点权都+1并且删掉这个点,问最后所有点点权和的期望。题解:考虑这个过程是在随机点分治,一个点的点权就是这个点的深度,即其祖先数量。那么考虑y在多少情况中能作为x的祖先,不难发现当且仅当x到y的路径上(不包含y)的点被删除时间都严格大于y。那么显然是有n!len+1\frac{n!}{\mathrm{len}+1}len+1n!种。因此...原创 2018-12-19 10:28:28 · 291 阅读 · 0 评论 -
青春野狼不做小恶魔学妹的梦 - 斯特林数 - 多项式理论
题目大意:对所nnn个点的连通图G\mathrm{G}G求边数的kkk次方和。n≤5×104,k≤15n\le5\times10^4,k\le15n≤5×104,k≤15题解:显然考虑斯特林数:mk=∑i=0kS(k,i)i!(mi)m^k=\sum_{i=0}^kS(k,i)i!\binom mimk=∑i=0kS(k,i)i!(im),因此统计nnn个点的图并选定其中恰好iii条不...原创 2018-12-26 12:45:29 · 2262 阅读 · 1 评论 -
[集训队作业2018]uoj 449 喂鸽子 - min-max容斥 - dp - NTT
题目大意:有n个数字一开始全0,每次随机一个数字++,问期望多少步后第一次有个位置的数字的值是k。n≤50,k≤1000n\le50,k\le1000n≤50,k≤1000。题解:显然k=1是个min-max容斥。因此min-max容斥。假设枚举的集合大小是aaa。一开始场上的做法是,期望转为∑i≥1P(ans≥i)\sum_{i\ge1}P(ans\ge i)∑i≥1P(ans≥i),然...原创 2019-03-05 08:28:45 · 434 阅读 · 0 评论 -
LOJ 6503 「雅礼集训 2018 Day4」Magic - 容斥 - 分治NTT
题目大意:有mmm种颜色的球每种aia_iai个共nnn个,问有多少种排列使得存在恰好k对相邻的球颜色相同。n<=1e5,m<=2e4.题解:首先给所有球一个标号即使颜色相同也认为是不同的球,这样最后除以∏ai!\prod a_i!∏ai!即可。然后考虑容斥,设g(x)g(x)g(x)表示至少x对的答案,知道这个就可以直接拼出ans(k)ans(k)ans(k)。然后考虑每一...原创 2019-03-05 08:57:11 · 547 阅读 · 0 评论 -
[2018 集训队互测 Day 5]LOJ 2504 小 H 爱染色 - 拉格朗日插值 - NTT
题解:通过列式子发现答案是关于n-m的3m+1次多项式,为了求出F(0)~F(3m+1),可以发现这玩意可以NTT出来。#include<bits/stdc++.h>#define rep(i,a,b) for(int i=a;i<=b;i++)#define Rep(i,v) rep(i,0,(int)v.size()-1)#define lint long long...原创 2019-03-13 16:07:18 · 825 阅读 · 0 评论 -
项链 - FFT
题目大意:给你两串项链,长度为n,每条分别有恰好k个黑色珠子。定义两个点距离dis(x,y)=[min(∣x−y∣,n−∣x−y∣)]2dis(x,y)=\left[min\left(|x-y|,n-|x-y|\right)\right]^2dis(x,y)=[min(∣x−y∣,n−∣x−y∣)]2。你可以旋转其中一串项链任意整数单位距离,然后要找到一个排列p,使得∑i=1kdis(xi,ypi...原创 2018-09-26 16:04:22 · 316 阅读 · 0 评论 -
myh的超级多项式 - 分治FFT
题目大意:给你n,k,{vk},{fk}n,k,\{v_k\},\{f_k\}n,k,{vk},{fk},并且已知fn=∑i=1kaivinf_n=\sum_{i=1}^k a_iv_i^{n}fn=∑i=1kaivin,求fn,n−k≤1000,k≤105,O(k(n−k))f_n,n-k\le1000,k\le10^5,O(k(n-k))fn,n−k≤1000,k≤105,O(...原创 2018-09-25 15:53:16 · 462 阅读 · 0 评论 -
bzoj 3160 万径人踪灭 - FFT - manacher
显然一对位置在(x,y)权值相等的字符会对(x+y)/2这个位置产生1的贡献,然后每个位置求出2的权值次方减去1求和,再减去连续的回文串即可,前者跑两次FFT,后者跑一个manacher即可。#include&lt;iostream&gt;#include&lt;cstring&gt;#include&lt;algorithm&gt;#include&lt;cstdio原创 2018-04-17 18:53:02 · 235 阅读 · 0 评论 -
bzoj 3456 城市规划 - 图计数 - NTT - 多项式求逆 - NTT学习笔记 - 多项式求逆学习笔记
设f[x]表示x个点的连通图,h[x]=2^{C(n,2)}为任意图的数量。 Hn=∑ni=1(n−1i−1)Fi×&amp;nbsp;Hn−iHn=∑i=1n(n−1i−1)Fi×&amp;nbsp;Hn−iH_n=\sum_{i=1}^n \binom{n-1}{i-1}F_i\times\ H_{n-i} Hn(n−1)!=∑ni=1Fi(i−1)!×&amp;nbsp;Hn−i(n−i)!Hn(n−1)!=∑...原创 2018-04-12 11:39:18 · 406 阅读 · 1 评论 -
chess 一个多项式插值维护dp的好题
题目大意:给你一个n*m的棋盘,你需要把一些格子染成黑色,使得有恰好k个黑色联通块,对998244353取模,n≤3,k,m≤5e4n≤3,k,m≤5e4n\le3,k, m\le5e4。题解:考虑dp,dp[i][j][S]表示第i列,第i列的黑格子集合是S并且有j个联通块(注意当n=3的时候第一、三行同是黑格子的时候有是否联通两种情况),这样|S|&lt;=9(事实上有几种状态相同可以去掉...原创 2018-04-27 17:31:24 · 306 阅读 · 0 评论 -
[学习笔记] 多项式求逆、带余除法、取模、求对数、求指数
一晚上写完求逆取模求ln求exp真酸爽 明天再顺手把求值插值写了人生就圆满了 求逆:#include&lt;iostream&gt;#include&lt;cstring&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#define gc getchar()#define lint long long#d原创 2018-07-23 21:42:38 · 645 阅读 · 0 评论 -
一道多项式exp模板题
多项式什么的真难写QwQ 题目大意:已知: f(x)=∏ni=1(1+aix)g(x)=∏mi=1(1+bix)h(x)=∏ni=1∏mj=1(1+aibjx)f(x)=∏i=1n(1+aix)g(x)=∏i=1m(1+bix)h(x)=∏i=1n∏j=1m(1+aibjx)f(x)=\prod_{i=1}^n(1+a_ix)\\g(x)=\prod_{i=1}^m(1+b_ix)\\h(x)...原创 2018-07-28 20:57:16 · 505 阅读 · 0 评论 -
子串(非NOIP的子串) - NTT - 哈希
题目大意:给两个字符串S和T,和一个置换p,问有多少S的子串,经过置换之后可以和T匹配。1e5 题解:考虑哈希,原来第i为的权值从BAS^i变成了根置换有关的东西,因此把BAS^p[i]倒过来和S做一个卷积即可,细节自行处理。 代码:// luogu-judger-enable-o2#include<iostream>#include<cstring>#i...原创 2018-07-21 09:08:48 · 200 阅读 · 0 评论 -
bzoj 4836 二元运算 - 分治FFT
傻逼分治FFT题。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>#include<assert.h>#define N 400010#define gc getchar()#def...原创 2018-08-07 15:39:48 · 249 阅读 · 0 评论 -
Mys_C_K的多项式计树好题 - dp - 多项式理论
给定N,&nbsp;MN,&nbsp;MN,\ M,对于每个x∈[1,&nbsp;M]x∈[1,&nbsp;M]x\in [1,\ M],求有多少无编号有根二叉树(区分左右儿子),满足: 1)其有xxx个叶子节点; 2)对于任意非叶子节点,其都有两个儿子节点; 3)对于从根出发的任意一条路径,向左走的次数不超过NNN。 答案对998244353998244353998244353取模,并注...原创 2018-08-16 21:30:07 · 420 阅读 · 0 评论 -
小Q与进位制 - 分治FFT
题目大意:有一种进制,第i位的进位值是baseibaseibase_i,然后现在给你一个数字a,问有多少数字不超过a,保证a有n位且最高位不为0,n≤120000n≤120000n\le120000。 题解:答案是:∑ni=1ai∏j≤ibj∑i=1nai∏j≤ibj\sum_{i=1}^n a_i\prod_{j\le i}b_j,考虑将a和b的每一项理解为多项式去做分治法法塔,像维护哈希一样...原创 2018-09-12 18:35:10 · 306 阅读 · 0 评论 -
暴风士兵(stormtrooper) - 分治 - 多项式理论
题目大意: 我直接说题目抽象出来的模型吧: 给你一个序列CCC的前n项,之后都是0;一开始你有一个多项式P(x)=1P(x)=1P(x)=1,然后m次操作,每次P=P×(aix+bi)P=P×(aix+bi)P=P\times(a_ix+b_i),也就是乘以一个单项式,然后你要输出∑i≥0Ci[xi]P(x)∑i≥0Ci[xi]P(x)\sum_{i\geq0}C_i\left[x^i\rig...原创 2018-09-10 17:58:20 · 683 阅读 · 0 评论 -
操作 - 分治NTT
题目大意:有n个操作和一个数字初始为0,每个操作形如有p的概率加a,1-p的概率乘b。现在随机打乱这个操作序列,问操作完数值的期望是多少。题解:每次就是让x变成kx+b。手玩一下发现答案就是:1n!∑i=1nbi∑j=0n−1j!(n−j−1)![xj]∏t=1n(x+kt)x+ki\frac1{n!}\sum_{i=1}^nb_i\sum_{j=0}^{n-1}j!(n-j-1)![x^...原创 2019-04-16 15:40:17 · 661 阅读 · 0 评论