随笔分类 -  FFT/NTT

摘要:显然相当于求有不超过n-2m种颜色出现奇数次的方案数。由于相当于是对各种颜色选定出现次数后有序排列,可以考虑EGF。 容易构造出EGF(ex-e-x)/2=Σx2k+1/(2k+1)!,即表示该颜色只能选奇数个。同理有EGF(ex+e-x)/2=Σx2k/(2k)!,即表示该颜色只能选偶数个。 考虑 阅读全文
posted @ 2019-05-22 13:21 Gloid 阅读(241) 评论(1) 推荐(0)
摘要:https://www.luogu.org/problemnew/solution/P4002 神树的题解写的很清楚了。稍微补充: 1.[x^i]ln(A(ax))=a^i[x^i]ln(A(x)),感觉直接证并非那么显然,大约是先求出多项式再把ax作为自变量带回去。 2.最后一句中的式子,即考虑由 阅读全文
posted @ 2019-04-03 17:58 Gloid 阅读(414) 评论(0) 推荐(0)
摘要:A(x)k=eklnA(x)。泰勒展开之后容易发现k并非在指数上,所以对p取模。 阅读全文
posted @ 2019-04-01 16:36 Gloid 阅读(218) 评论(0) 推荐(0)
摘要:因为一大堆式子实在懒得写题解了。首先用prufer推出CF917D用到的结论,然后具体见前言不搭后语的注释。 阅读全文
posted @ 2019-03-30 19:05 Gloid 阅读(239) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 阅读全文
posted @ 2019-02-16 00:51 Gloid 阅读(195) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 阅读全文
posted @ 2019-02-16 00:16 Gloid 阅读(156) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 写NTT把i<<=1写成了i<<=2,又调了一年。发现我的日常就是数组开小调调调,变量名写错调调调,反向判if调调调,退役吧。 阅读全文
posted @ 2019-02-15 23:32 Gloid 阅读(151) 评论(0) 推荐(0)
摘要:首先只有一份图时显然可以状压dp,即f[S][i]表示S子集的哈密顿路以i为终点的方案数,枚举下个点转移。 考虑容斥,我们枚举至少有多少条原图中存在的边(即不合法边)被选进了哈密顿路,统计出这个情况下的哈密顿路数量就可以容斥了。 考虑暴力,显然是枚举在每张图中选择了哪些不合法边。注意到当固定了某些边 阅读全文
posted @ 2019-02-11 22:23 Gloid 阅读(251) 评论(0) 推荐(0)
摘要:设f[i]为连通图的数量,g[i]为不连通图的数量,显然有f[i]=2i*(i-1)/2-g[i],g[i]通过枚举1所在连通块大小转移,有g[i]=Σf[j]*C(i-1,j-1)·2(i-j)*(i-j-1)/2,也即f[i]=2i*(i-1)/2-(i-1)!·Σf[j]·2(i-j)*(i- 阅读全文
posted @ 2019-01-18 14:17 Gloid 阅读(180) 评论(0) 推荐(0)
摘要:S(i,j)=Σ(-1)j-k(1/j!)·C(j,k)·ki=Σ(-1)j-k·ki/k!/(j-k)!。原式=ΣΣ(-1)j-k·ki·2j·j!/k!/(j-k)! (i,j=0~n)。可以发现i只在式中出现了一次且与j不相关,如果对每个k求出其剩余部分的答案,各自乘一下即可。而剩余部分显然是 阅读全文
posted @ 2019-01-15 16:00 Gloid 阅读(122) 评论(0) 推荐(0)
摘要:先只考虑求某个f(k)。考虑转换为计算每条边的贡献,也即该边被所选连通块包含的方案数。再考虑转换为计算每条边不被包含的方案数。这仅当所选点都在该边的同一侧。于是可得f(k)=C(n,k)+ΣC(n,k)-C(sizei,k)-C(n-sizei,k)。于是就可以O(n)求出某个f(k)了。 现在要求 阅读全文
posted @ 2019-01-14 18:49 Gloid 阅读(160) 评论(0) 推荐(0)
摘要:显然的做法是求出斯特林数,但没有什么优化空间。 考虑一种暴力dp,即设f[i]为i块积木的所有方案层数之和,g[i]为i块积木的方案数。转移时枚举第一层是哪些积木,于是有f[i]=g[i]+ΣC(i,j)·f[i-j],g[i]=ΣC(i,j)·g[i-j] (j=1~i)。 考虑优化 。我们发现这 阅读全文
posted @ 2019-01-01 01:24 Gloid 阅读(262) 评论(0) 推荐(0)
摘要:考虑容斥,枚举一个子集S在1号猎人之后死。显然这个概率是w1/(Σwi+w1) (i∈S)。于是我们统计出各种子集和的系数即可,造出一堆形如(-xwi+1)的生成函数,分治NTT卷起来就可以了。 阅读全文
posted @ 2018-12-20 13:15 Gloid 阅读(215) 评论(0) 推荐(0)
摘要:第一眼生成函数。四个等比数列形式的多项式相乘,可以化成四个分式。其中分母部分是固定的,可以多项式求逆预处理出来。而分子部分由于项数很少,询问时2^4算一下贡献就好了。这个思路比较直观。只是常数巨大,以及需要敲一发类似任意模数ntt的东西来避免爆精度。成功以这种做法拿下luogu倒数rank1,至于b 阅读全文
posted @ 2018-08-13 02:03 Gloid 阅读(210) 评论(0) 推荐(0)
摘要:容易想到枚举恰好出现S次的颜色有几种。如果固定至少有i种恰好出现S次,那么方案数是C(M,i)·C(N,i*S)·(M-i)N-i*S·(i*S)!/(S!)i,设为f(i)。 于是考虑容斥,可得恰好i种的答案为Σ(-1)j-iC(j,i)·f(j) (j=i~min(M,⌊N/S⌋))。因为容斥是 阅读全文
posted @ 2018-08-10 23:20 Gloid 阅读(154) 评论(0) 推荐(0)
摘要:容易想到先统计回文串数量,这样就去掉了不连续的限制,变为统计回文序列数量。 显然以某个位置为对称轴的回文序列数量就是2其两边(包括自身)对称相等的位置数量-1。对称有啥性质?位置和相等。这不就是卷积嘛。那么就做完了。 又写挂manacher,没救。 阅读全文
posted @ 2018-08-10 15:19 Gloid 阅读(149) 评论(0) 推荐(0)
摘要:两个串匹配时相匹配的位置位置差是相同的,那么翻转一个串就变成位置和相同,卷积的形式。 考虑如何使用卷积体现两个位置能否匹配。一个暴力的思路是每次只考虑一种字符,将其在一个串中设为1,并在另一个串中将不是该字符且不是通配符的设为1,卷积结果不为0则无法匹配。这样要跑26次1e6的FFT,就算有6s也… 阅读全文
posted @ 2018-08-09 23:14 Gloid 阅读(178) 评论(0) 推荐(0)
摘要:思路比较直观。设A(x)=Σxai。先把只选一种的统计进去。然后考虑选两种,这个直接A(x)自己卷起来就好了,要去掉选同一种的情况然后除以2。现在得到了选两种的每种权值的方案数,再把这个卷上A(x)。得到这个后考虑去重,其中重复的就是选了两个相同的和另外一个,那么再把选两个相同的生成函数搞出来卷上A 阅读全文
posted @ 2018-08-09 21:42 Gloid 阅读(183) 评论(0) 推荐(0)
摘要:首先有一个想法,翻转串后直接卷积看有没有0匹配上1。但这是必要而不充分的因为在原串和翻转串中?不能同时取两个值。 先有一些结论: 如果s中长度为len的前缀是border,那么其存在|s|-len的循环节(最后一段不一定完整)。 如果已知len不是s的循环节,那么显然len的因子也不是s的循环节。 阅读全文
posted @ 2018-08-09 17:52 Gloid 阅读(169) 评论(0) 推荐(0)
摘要:设A(n)为a中n的个数,B(n)为b中n的个数。如果只考虑加法显然是一个卷积,减法翻转一下也显然是一个卷积。 问题在于两者都有。容易想到分开处理。那么可以考虑分治。即对于值域区间[l,r],分别计算A[l,mid]和B[mid+1,r]的贡献及A[mid+1,r]和B[l,mid]的贡献,然后再递 阅读全文
posted @ 2018-08-09 12:52 Gloid 阅读(293) 评论(0) 推荐(0)