多项式全家桶
文章平均质量分 79
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
P4199 万径人踪灭(字符串匹配NTT+Manacher)
传送门一串字符串序列fff,如何求一些子序列满足子序列字母对称,且位置对称。考虑把贡献累加在对称轴线上iii上设有kkk个j<ij<ij<i满足f[j]==f[2i−j]f[j]==f[2i-j]f[j]==f[2i−j],那么方案数是2k+1−12^{k+1}-12k+1−1因为包括对称中心在内,k+1k+1k+1个字母对可选可不选,但不能一个都不选现在我们就是要求f[j]==f[2i−j]f[j]==f[2i-j]f[j]==f[2i−j]的个数了我们令a=1,b=0a原创 2021-02-10 11:38:03 · 246 阅读 · 0 评论 -
2016香港网络赛 A+B Problem(FFT+容斥)
传送门求有多少个不同的(i,j,k)(i,j,k)(i,j,k)三元组满足ai+aj==aka_i+a_j==a_kai+aj==ak我们把数字的大小作为下标,f[ai]++,g[ai]++f[a_i]++,g[a_i]++f[ai]++,g[ai]++那么res[x]=∑i=1xf[i]∗g[x−i]res[x]=\sum\limits_{i=1}^{x}f[i]*g[x-i]res[x]=i=1∑xf[i]∗g[x−i]发现构成xxx的方案数就是res[x]res[x]res[x]原创 2021-01-27 10:18:39 · 235 阅读 · 0 评论 -
2018 ACM-ICPC 中国大学生程序设计 Rock Paper Scissors Lizard Spock(NTT字符串匹配)
传送门题目大意两个人玩五种手势的类似石头剪刀布的游戏。给出两个人的出的顺序,你是第二个人,你可以选择从某个回合开始出问你最多能赢几局游戏。每种手势能赢两外两种手式一起考虑不太好搞,但是如果把每个点的答案分为五种贡献分别是R,S,P,K,LR,S,P,K,LR,S,P,K,L的获胜次数那就简单了SP,SLSP,SLSP,SLPR,PKPR,PKPR,PKKS,KRKS,KRKS,KRRL,RSRL,RSRL,RSLS,LPLS,LPLS,LP比如现在我们只计算SP,SLSP,SLS原创 2021-01-27 10:18:30 · 396 阅读 · 0 评论 -
CodeChef - COVERING Covering Sets(sosdp+[FWT或高妙的容斥])
VJ传送门中文题面题意给定函数F(a),G(b),H(c)F(a),G(b),H(c)F(a),G(b),H(c),分别返回f,g,hf,g,hf,g,h数组的第a,b,ca,b,ca,b,c项(从零起)求R[l]=∑F(a)∗G(b)∗H(c)R[l]=\sum F(a)*G(b)*H(c)R[l]=∑F(a)∗G(b)∗H(c)其中满足(a∣b∣c)&l==l(a|b|c)\&l==l(a∣b∣c)&l==l首先我们可以用SOSDPSOSDPSOSDP快速求R[l]原创 2021-01-19 08:17:14 · 378 阅读 · 0 评论 -
P3338 [ZJOI2014]力(推式子+FFT)
传送门给出nnn个数q1,q2..qnq_1,q_2..q_nq1,q2..qnFj=∑i=1j−1qi∗qj(i−j)2−∑i=j+1nqi∗qj(i−j)2F_j=\sum\limits_{i=1}^{j-1}\frac{q_i*q_j}{(i-j)^2}-\sum\limits_{i=j+1}^{n}\frac{q_i*q_j}{(i-j)^2}Fj=i=1∑j−1(i−j)2qi∗qj−i=j+1∑n(i−j)2qi∗qjEi=FiqiE_i=\frac{F_i}{q_原创 2020-12-30 17:56:20 · 249 阅读 · 0 评论 -
牛客练习赛41 D.最小相似度(思维+bfs)
传送门给定nnn个长mmm位的二进制串求一个二进制串TTT,定义valival_ivali是TTT与第iii个二进制串相同的位数使得max(val1,val2....valn)max(val_1,val_2....val_n)max(val1,val2....valn)最小,只需要输出这个最小值。因为总的状态只有2202^{20}220,要是能求出每个状态到nnn个串的maxmaxmax问题就迎刃而解了如果把这nnn个二进制串的任何一个作为TTT,答案是mmm,因为和自己所有位是相同的.原创 2020-12-29 17:37:04 · 254 阅读 · 1 评论 -
浅析快速沃尔什变换FWT(or,and,xor)
洛谷FWT模板一通百通,先说最简单的或运算吧求ci=∑j∣k=iajbkc_i=\sum\limits_{j|k=i}a_jb_kci=j∣k=i∑ajbk先构造一个FWTFWTFWT规则也就是FWT(a)=∑j∣i=iajFWT(a)=\sum\limits_{j|i=i}a_jFWT(a)=j∣i=i∑aj也就是FWT(b)=∑k∣i=kbkFWT(b)=\sum\limits_{k|i=k}b_kFWT(b)=k∣i=k∑bk那么FWT(a)∗FWT(b)FWT(a)*FW原创 2020-12-28 16:14:11 · 401 阅读 · 0 评论 -
P3723 [AH2017/HNOI2017]礼物(经典构造FFT)
最小化∑i=1n(ai−bi)2\sum\limits_{i=1}^n(a_i-b_i)^2i=1∑n(ai−bi)2同时增大亮度是没有意义的,可以转化为增大一个数组的亮度,设增大了数组aaa亮度xxx∑i=1n(ai−bi+x)2\sum\limits_{i=1}^n(a_i-b_i+x)^2i=1∑n(ai−bi+x)2=∑i=1nai+∑i=1nbi2+nx2+2x∑i=1n(ai−bi)−2∑i=1naibi=\sum\limits_{i=1}^n a_i+\sum\limits原创 2020-12-22 21:58:13 · 279 阅读 · 0 评论 -
牛客练习赛32 F-Friendly Polynomial(分治FFT)
定义f[i]f[i]f[i]为截止到iii不合法序列的个数但是问题在于一个序列可能在多个位置不合法为了不重复,我们只在最大的那个不合法位置计算贡献比如排列2 1 3 5 4在位置2和位置3都不合法,那我们就在位置3计算贡献好,那我们现在定义f[i]f[i]f[i]为长度为nnn的不合法序列,且这个序列的最大不合法位置在点iii考虑递推式,相当于前iii个位置是[1,i][1,i][1,i]的全排列,方案数是i!i!i!而且不存在一个j>ij>ij>i满足[1,j][1,j][1原创 2020-12-22 16:54:35 · 232 阅读 · 0 评论 -
多项式求逆(倍增或分治FFT)
传送门F(x)∗H(x)≡ 1 (mod x⌈n2⌉)由题意得F(x)∗G(x)≡1(mod x⌈n2⌉)那么F(x)∗[G(x)−H(x)]≡0(mod x⌈n2⌉)就是G(x)−H(x)≡0(mod x⌈n2⌉)两边同时平方得到G(x)2+H(x)2−2G(x)H(x)≡0(mod xn)模数变成xn是有原因的,我们定义f(x)=G(x)−H(x),f(x)2为f(x)∗f(x)因为fi2=∑j=0ifj∗fi−j其中i和i−j不可能同时大于n2,所以一定有一项为0得证我原创 2020-12-21 17:58:57 · 347 阅读 · 0 评论 -
分治FFT浅析
给定序列g1......n−1g_{1......n-1}g1......n−1,求序列f0......n−1f_{0......n-1}f0......n−1已知f[i]=∑j=1if[j]∗g[i−j]f[i]=\sum\limits_{j=1}^if[j]*g[i-j]f[i]=j=1∑if[j]∗g[i−j]其中f[0]=1,g[0]=0f[0]=1,g[0]=0f[0]=1,g[0]=0暴力观察这个式子,有一个很暴力的想法f[i]=∑j=1if[j]∗g[i−j]f[i]=\s.原创 2020-12-21 12:47:12 · 1000 阅读 · 0 评论