快速傅里叶变换(FFT)
L_0_Forever_LF
一个热爱OI的OIer
展开
-
NTT板子
NTT很容易爆int原创 2016-10-21 19:15:55 · 1024 阅读 · 0 评论 -
BZOJ5093: [Lydsy1711月赛]图的价值
n2cnt−n+1∑i=0n−1(n−1i)ikn2cnt−n+1∑i=0n−1(in−1)ikn2^{cnt-n+1}\sum_{i=0}^{n-1}(^{n-1}_i)i^k 其实就是要计算 ∑ni=0(ni)ik∑i=0n(in)ik\sum_{i=0}^n(^n_i)i^k 拆一下 ∑i(ni)∑kj=0{kj}j!(ij)∑i(in)∑j=0k{jk}j!(ji)\sum_i(^...原创 2018-04-10 17:06:27 · 401 阅读 · 0 评论 -
BZOJ3160: 万径人踪灭
一开始看错题以为位置可以不对称……在串S相邻字符间插入#就可以处理偶数回文串了 不连续的回文子序列个数=回文子序列个数-连续的回文子序列个数 连续的可以用Manacher算 对于不连续的,若i是回文中心,i两侧对称的字符个数为c[i],就有2c[i]−12c[i]−12^{c[i]}-1个因为位置是对称,计算c[i]可以用fft,先令a的值为1卷一次再令b的值为1卷一次,注意回文中心...原创 2018-03-05 17:02:51 · 183 阅读 · 0 评论 -
BZOJ4259: 残缺的字符串
一直在想各种字符串匹配算法…将’a’视为1,’b’视为2,‘*’视为0 那么A0......AnA0......AnA_0......A_n和Bk.....Bk+n−1Bk.....Bk+n−1B_k.....B_{k+n-1} 匹配的条件就是 ∑nj=0(Aj−Bk+j)2AjBk+j=0∑j=0n(Aj−Bk+j)2AjBk+j=0\sum_{j=0}^n(A_j-B_{k+j})^2...原创 2018-03-05 16:55:25 · 262 阅读 · 0 评论 -
codeforces 553E - Kyoya and Train
一个有向图,走每条边有个代价,且花费的时间从1~T有个概率p[e][i],从1到n,若到达时时间超过T,则需要额外X的花费,问期望最小花费令f[i][j]表示在j时刻从i出发到达n的最小期望,因为虽然每条边花费的时间是不确定的,但至少是1,所以(i,j)这个分层图实际上是一个DAG,就可以dp了对于一条边e:u−>ve:u->v,有 f[u][t]=min(ei+∑Tj=1f[v][t+j]∗p[原创 2017-09-21 12:34:25 · 853 阅读 · 0 评论 -
codeforces 848E. Days of Floral Colours
自己对自己的吐槽.. 注意多项式相关的题,卷积算得的东西,下标>n的项最好清零,不然容易错,多项式求逆手推错了….在求逆过程中卷积的大小都是n<<1,ln+1,每次的id的ln要带进去重新生成,NTT没处理到w[N]结果访问w[n-i*tt]时错,有地方没取模,细节处理的不好。题解部分: 先考虑一段被两对oppsite的同色花截得的长度为i的弧和他对应的另一端弧的情况: g[i]表示不跨出去连原创 2017-09-12 22:11:02 · 807 阅读 · 0 评论 -
codeforces 773F. Test Data Generation
%%%tourist问有多少个符合条件的集合,使an/g−na_n/g-n和an/ga_n/g,an−na_n-n奇偶性不一样 要使an/g−na_n/g-n和an/ga_n/g奇偶性不一样,只要n是奇数就行了 要使an/g−na_n/g-n和an−na_n-n奇偶性不一样,就是要使an/ga_n/g和ana_n奇偶性不一样,就是说,集合里最大的数在去掉集合的gcd后改变了奇偶性,因为奇数去掉因原创 2017-09-20 20:03:25 · 572 阅读 · 0 评论 -
BZOJ3771: Triple
我们写出斧头的生成函数F(x)F(x) 题目要求用1把、2把、3把斧头能拼出的方案数,不考虑顺序 那就要去掉非法情况和重复情况 所以就不能写成:F(x)+F2(x)+F3(x)F(x)+F^2(x)+F^3(x) 对于F2(x)F^2(x),他会有一把斧头用2次的情况 对于F3(x)F^3(x),会有一把斧头用2、3次的情况 于是令T(x)T(x)为每把斧头用2次的生成函数,G(x)G(原创 2017-07-29 10:27:35 · 424 阅读 · 0 评论 -
弱省胡策Round5 Handle
题意: 给定B0...BnB_0...B_n,求A0...AnA_0...A_n满足Bi=∑nj=iCijAj(mod 988244353)Bi=\sum_{j=i}^nC_j^iA_j ( mod\ 988244353)题解: 拆组合数 得Bi=∑nj=ij!i!(j−i)!AjB_i=\sum_{j=i}^n\dfrac{j!}{i!(j-i)!}A_j 于是Bii!=∑nj=i1(j−原创 2017-07-29 12:49:13 · 326 阅读 · 0 评论 -
BZOJ4555: [Tjoi2016&Heoi2016]求和
第二类斯特林数S(i,j)S(i,j)S(i,j)代表iii个数分成jjj个集合的方案数f(n)=∑ni=0∑ij=0S(i,j)∗2j∗j!f(n)=∑i=0n∑j=0iS(i,j)∗2j∗j!f(n)=\sum_{i=0}^n \sum_{j=0}^i S(i,j)*2^j*j!这里的S(i,j)∗2j∗j!S(i,j)∗2j∗j!S(i,j)*2^j*j! 可以理解成i个数分成j个集...原创 2017-07-29 15:12:17 · 842 阅读 · 2 评论 -
BZOJ4827: [Hnoi2017]礼物
题意大致是求这样一个柿子的最小值∑ni=1(Ai−Bj+k)2\sum_{i=1}^n(A_i-B_j+k)^2其中k是你定的,j是经过旋转后i的对应位置 然后画一下柿子 ∑ni=1((Ai−Bj)2+2k(Ai−Bj)+k2)\sum_{i=1}^n((A_i-B_j)^2+2k(A_i-B_j)+k^2) ∑ni=1(Ai−Bj)2+2k(∑ni=1Ai−∑ni=1Bi)+nk2\sum_原创 2017-04-26 08:22:59 · 811 阅读 · 0 评论 -
BZOJ4332: JSOI2012 分零食
首先,因为糖果数M<=10000,最多分给前M个人,所以人数A>M的情况可以视为A=M来做 然后朴素的想法是一个DP,即f[i][j]表示前i个人得到j个糖果的欢乐程度乘积和,有f[i][j]=∑j−1k=1f[i−1][k]∗g(j−k)f[i][j]=\sum_{k=1}^{j-1}f[i-1][k]*g(j-k),其中g(i)g(i)表示一个人得到i个糖果的欢乐程度,这样直接DP是O(n3)原创 2017-04-14 19:22:52 · 866 阅读 · 0 评论 -
快速傅里叶变换 FFT 板子
参考了一些大神的板子后加上理解,自己写的一个板子题目:UOJ #34 多项式乘法原创 2016-08-29 15:18:22 · 1613 阅读 · 0 评论 -
BZOJ2287: 【POJ Challenge】消失之物
高兴的写了个FFT发现自己是最慢的几个… 思想固化… 非正解维护一个前缀DPf[i][j]表示1~i凑出j的方案数,一个后缀DPg[i][j]表示i~n凑出j的方案数,去掉i就是f[i-1]和g[i+1]合并,用FFT卷积优化code:#include<set>#include<map>#include<deque>#include<queue>#include<stack>#inclu原创 2017-03-25 14:50:58 · 577 阅读 · 0 评论 -
hdu 5730 2016 Multi-University Training Contest 1 Shell Necklace 解题报告
题意大概是说有n个石头,要你分成若干部分,一个部分的数量为k,那么他的价值就是a[k],这n个石头的价值就是每部分的价值的乘积,求所有分这n个石头的方法的价值和对313取模然后看完题意可以想到一个简单的DP,设f[i]表示i个石头的价值和,可以得到一个方程 f[i] = ∑f[j]*a[i-j] ,初始化一原创 2016-08-29 09:20:37 · 848 阅读 · 0 评论 -
BZOJ3509: [CodeChef] COUNTARI
想不到怎么办,分块试一下 块内的可以直接DP出来,块与块之间的,化一下公式发现ai+ak=2aja_i+a_k=2a_j,所以处理第i块,维护1~i-1块每个数出现次数,i+1~n块每个数出现次数,FFT卷积一下,枚举块内的每个值的两倍累加上答案 鉴于FFT常数大,块的大小定为1800左右比较合适code:#include<set>#include<map>#include<deque>#原创 2016-10-26 22:17:10 · 1009 阅读 · 0 评论 -
任意模数FFT 板子
Orz myy原创 2016-10-21 19:16:57 · 3392 阅读 · 2 评论 -
UOJ #181. 【UR #12】密码锁
一个竞赛图,其中m条边,方向为x−&gt;y(x&lt;y)x−&gt;y(x&lt;y)x->y(x< y)的概率是pipipi,y−&gt;xy−&gt;xy->x的概率是1−pi1−pi1-pi,其他边两个方向的概率都是1212\frac 12 求强连通分量的期望个数竞赛图缩点后一定是一条链,前面的点连向后面所有点,我们定义点集SSS是这条链的一个前缀当且仅当原创 2018-05-03 10:47:04 · 441 阅读 · 0 评论