
快速傅里叶变换
文章平均质量分 55
WerKeyTom_FTD
这个作者很懒,什么都没留下…
展开
-
梦醒
题目描述Pty继续着他的疯狂奔跑,终于渐渐体力不支,在一个应该拐弯的地方没有刹住车,掉入了深深的沼泽中,“啊~~~~~·”pty惊恐的大叫,突然从梦中惊醒了。哪里还有什么奇怪的金字塔,沼泽地,大树。。。只是一个梦而已呀。看了看自己熟悉的房间,pty定了定神。好不容易恢复了过来,pty突然想到还有集训队的互测题没有出!!,如果没有出完的话,后果= =。。啧啧。。pty宁愿再回到金字塔去。于是pty想啊原创 2015-12-30 20:15:18 · 672 阅读 · 0 评论 -
[bzoj4827]gift
题目描述FFT首先可以看做第二个+c,这个c可以为负数。 把第二个倍长。 拆式子容易发现。 需要求出∑n−1i=0∑n−1j=0a[i]∗b[i+j]\sum_{i=0}^{n-1}\sum_{j=0}^{n-1}a[i]*b[i+j] 的最小值 求出这个剩余部分是关于c的二次函数,用初中数学知识求解。 这个玩意怎么求》考虑把b翻转。 设c[2n−j]=∑n−1i=0∑n−1j=0a[原创 2017-04-21 15:32:20 · 836 阅读 · 0 评论 -
[51nos1971]驴蛋蛋与老孙与微分式
题目描述http://www.51nod.com/contest/problem.html#!problemId=1971oeis这是一道oeis题,把答案打表,差分丢oeis,可以得到一个东西。 接下来用FFT预处理伯努利数,用公式做。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#in原创 2017-06-18 22:37:59 · 687 阅读 · 0 评论 -
看无可看
题目大意一个序列a[i]。 选择任意k个位置,记和为S。 为答案贡献f(S)。 f是类斐波那契数列,对于i>1它满足f(i)=2*f(i-1)+3*f(i-2)。做法这是个常系数线性齐次递推。 对于本题M(x)=x^2-2x-3。 定义(a,b)=ax+b,那么可以重载乘法(乘法在模M(x)意义下): (a,b)*(c,d)=(bc+ad+2ac,bd+3ac) 对于每个a[i]初始可原创 2017-06-13 15:13:32 · 668 阅读 · 0 评论 -
决战
题目大意给你一个3*n网格图。 你有m个士兵,每个士兵会对3*3的范围内进行攻击,攻击矩阵初始给定。 有多少种放置士兵的方法,使得士兵互不攻击。DP很显然能dp 这个dp还很显然能NTT优化 但是常数大显然不一定跑得过暴力 于是我们就暴力吧(雾#pragma GCC optimize(2)#include<cstdio>#include<algorithm>#define fo(i,原创 2017-08-13 22:27:26 · 483 阅读 · 0 评论 -
[agc005f]Many Easy Problems
前言居然有FFT题。题目大意给你一棵树,对于每个k求出在树上任选k个点形成虚树大小的和。做法假设这是有根树。 考虑一个点i对于一个k的贡献,考虑容斥。 Ckn−∑j是i儿子Cksize[j]−Ckn−size[i]C_n^k-\sum_{j是i儿子}C_{size[j]}^k-C_{n-size[i]}^k 假设a[i]表示最终答案中CkiC_i^k的系数,对于任何k来说a都是不变的。 然后原创 2017-10-31 10:52:10 · 800 阅读 · 0 评论 -
几何题
题目大意给你n个三维空间的点(坐标为整数且非负)。 q次询问,每次询问一个很神秘的式子。做法显然是上三维FFT。 然后需要加入一系列优化卡常。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)//#define abs(x) (x<0?-x:x)using names原创 2017-11-23 15:11:44 · 610 阅读 · 0 评论 -
[2017集训队作业自选题#119]众数MAX
题目大意两个长度为n的序列a和b,将它们分别任意排列,然后令c[i]=a[i]+b[i]c[i]=a[i]+b[i],使c[i]的众数出现次数尽量多。 值域与n同阶。做法不妨令A[i]表示a中i的出现次数,B同理。 令ans[i]表示i作为众数的最多出现次数。 显然的暴力 ans[i]=∑ij=0min(A[j],B[i−j])ans[i]=\sum_{j=0}^imin(A[j],B[i-原创 2017-12-21 21:07:42 · 686 阅读 · 0 评论 -
[bzoj4161]Shlw loves matrixI
题目大意常系数齐次递推生成函数构造特征多项式 然后用快速幂做多项式取模 多项式乘法暴力即可#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define lowbit(x) (x&-x)using namespace std;typedef long long ll;const int max原创 2017-04-18 10:35:28 · 1101 阅读 · 0 评论 -
航海舰队
题目描述Byteasar 组建了一支舰队!他们现在正在海洋上航行着。 海洋可以抽象成一张n×m 的网格图,其中有些位置是“.”,表示这一格是海水,可以通过;有些位置是“#”,表示这一格是礁石,不可以通过;有些位置是“o”,表示这一格目前有一艘舰,且舰离开这一格之后,这一格将变为“.”。 这些“o” 表示Byteasar 的舰队,他们每天可以往上下左右中的一个方向移动一格,但不能有任何一艘舰驶出地原创 2017-04-18 11:14:58 · 1040 阅读 · 0 评论 -
[bzoj4332][JSOI2012]分零食
题目大意把正整数M分解成至多N份且每份不为0(注意1+2+3与2+3+1是不一样的即存在顺序性),一份x的价值是f(x)=a2*x*x+a1*x+a0,总价值为每一份价值的乘积。求所有情况下总价值的和,答案模mo。 M<=10000,mo<=255,N<=10^8,a2<=4,a1<=300,a0<=100DP设g[i,j]表示把j分解成i份的总价值和。 显然g[i,j]=∑j−1k=1g[i−原创 2016-01-02 15:16:58 · 1561 阅读 · 3 评论 -
[bzoj3992][SDOI2015]序列统计
题目描述小C有一个集合S,里面的元素都是小于M的非负整数。他用程序编写了一个数列生成器,可以生成一个长度为N的数列,数列中的每个数都属于集合S。 小C用这个生成器生成了许多这样的数列。但是小C有一个问题需要你的帮助:给定整数x,求所有可以生成出的,且满足数列中所有数的乘积mod M的值等于x的不同的数列的有多少个。小C认为,两个数列{Ai}和{Bi}不同,当且仅当至少存在一个整数i,满足Ai≠Bi原创 2015-12-29 18:51:50 · 1225 阅读 · 0 评论 -
[bzoj3456]城市规划
题目大意给你n个点(存在顺序性),初始无边,你可以任意加边。求满足以下条件的连通图数量:无重边无自环。答案模479∗221+1479 * 2 ^{21} + 1DP我们设f[i]表示i个点对应的答案。 正难则反,我们可以用总数量减去不合法数量。 总数量为2C2i2^{C_i^2} 如何不重复不遗漏统计不合法数量? 我们可以枚举i点所在连通块的数量,然后其他乱连, 也就是f[i原创 2015-12-23 20:31:28 · 1563 阅读 · 0 评论 -
[bzoj4555][TJOI&HEOI2016]求和
题目大意向卷积形式出发ans=∑i=0n∑j=0iS(i,j)∗2j∗j!ans=\sum_{i=0}^n\sum_{j=0}^iS(i,j)*2^j*j! 注意到第二类斯特林数的意义,将i个数分成j个集合的方案数,也就是说,当i<ji<j时,结果会为0,所以j的枚举上界可以直接改为n。 ans=∑i=0n∑j=0nS(i,j)∗2j∗j!ans=\sum_{i=0}^n\sum_{j=0}^n原创 2016-07-14 15:43:57 · 2435 阅读 · 0 评论 -
[bzoj4503]两个串
题目大意兔子们在玩两个串的游戏。给定两个字符串S和T,兔子们想知道T在S中出现了几次, 分别在哪些位置出现。注意T中可能有“?”字符,这个字符可以匹配任何字符。FFT我们把T串反过来。 设a表示S串(把字符转成不为0的数字) b表示T串,其中问号可以用一个0表示 设c[j+m−1]=∑(a[j+i]−b[m−i−1])2∗a[j+i]∗b[m−i−1]c[j+m-1]=\sum (a[j+i原创 2017-04-06 22:12:30 · 607 阅读 · 0 评论 -
[bzoj3451]Tyvj1953 Normal
题目大意点分治过程中每次随机选择分治中心。 求期望复杂度。期望的线性性容易知道可以单独考虑每个点的贡献。 对于x和y,我们考虑y能否给x带来1的贡献,即y是否是x在点分树上的祖先。 那么Y必须是x到y上第一个被选择为分治中心的点。 一条路径上每个点成为第一个被选择的点概率均等,因此贡献为1dis(i,j)\frac{1}{dis(i,j)} 答案就是∑ni=1∑nj=11dis(i,j)\原创 2017-04-07 09:39:30 · 1233 阅读 · 0 评论 -
FFT及NTT模板
FFT其中2ce=len2^{ce}=lenvoid DFT(node *a,int sig){ fo(i,0,len-1){ int p=0; for(int j=0,tp=i;j<ce;j++,tp/=2) p=(p<<1)+(tp%2); tt[p]=a[i]; } for(int m=2;m<=len;m*=2){原创 2016-07-14 15:27:19 · 1757 阅读 · 0 评论 -
[bzoj3509][codechef]COUNTARI
题目大意求有多少对i<j<ki<j<k 满足a[j]-a[i]=a[k]-a[j]分块FFT口胡里写过了。 枚举j,我们可以得到两边的生成函数。 只要卷积起来看2*a[j]项的系数就可以统计了。 这样做显然不行。 考虑分块。 对于i或k在块内的情况,用枚举来暴力统计。 而对于i与k均不在块内的情况,用FFT。#include<cstdio>#include<algorithm>#i原创 2017-03-28 22:32:24 · 653 阅读 · 0 评论 -
[2017集训队作业自选题#124]Path
题目大意给定 n 和 ai, 满足 a0≥a1≥⋯an−1≥0, 求出在 n 维空间中从 (0,0,…,0) 走到 (a0,a1,…,an−1), 每一步使某一维坐标增加 1 的方案中随机选出一种, 满足经过的所有点 (x0,x1,…,xn−1) 都满足 x0≥x1≥⋯≥xn−1 的概率. 答案模 1004535809 输出.结论先转化题意:有一个高度为m的表格,第i行有ai个格子,ai不上升,假设原创 2018-01-11 12:04:25 · 856 阅读 · 0 评论