FFT
npugenji
这个作者很懒,什么都没留下…
展开
-
HDU 4609 3-idiots FFT入门
给你一堆数,问你组成三角形的概率是多少。首先用FFT算出可以用两个数组成的长度。把数当做权值,出现一个数就在那个权值位置加1。 然后就是用FFT计算多项式乘法。然而这样会有重复 1. 一个数自己和自己组合是不存在的,所以要删一次 2. 比如有两个数1 2 ,取(1,2)和取(2,1)是一样的,这样等于所有情况都算了两遍,除以2即可。然后算能组成三角形的情况个数。 把FFT的结果先做一个前缀和原创 2017-09-28 21:42:11 · 199 阅读 · 0 评论 -
2016 香港网络赛 A题. A+B Problem (FFT)
题目地址 给你一堆数,问你满足ai+aj=ak a_i+a_j = a_k 的 (i,j,k) (i,j,k) 三元组的数量。 因为有负数,所以给每个数右移50000 然后几乎是一个裸的FFT,就这么提交,然后WA了。之后想到了忘记判不符合的情况了,只有一个地方要考虑一下。就是ai=0且j==k或者aj=0且i=ka_i = 0 且 j==k 或者 a_j=0 且 i=k 容易想到这个次数就原创 2017-09-28 22:45:44 · 337 阅读 · 0 评论 -
URAL 1996 Cipher Message 3 FFT KMP
首先还是要回到卷积的定义上 C(k)=Σi+j=kai∗bj C(k) = \Sigma_{i+j=k} a_{i}*b_{j} 这题这种做法我是看了题解之后才知道的。如果a是a1a2a3a4a_1a_2a_3a_4 ,B是b1b2b3b_1b_2b_3 ,如果我们做卷积,那么其中C5=a2∗b3+a3∗b2+a4∗b1C_5 = a_2 * b_3+a_3*b_2+a_4*b_1,这和我们的比原创 2017-09-29 21:25:28 · 292 阅读 · 0 评论 -
CodeChef - COUNTARI Arithmetic Progressions FFT 分块
这题因为ijk大小关系的限制,所以不能像三个傻瓜那题一样直接FFT,排序后排出情况。所以一开始想到的是对每个位置都做一次FFT,即枚举AjA_j,用Ai和AkA_i 和 A_k做FFT,但这复杂度明显是不行的O(N∗30000∗log30000)O(N * 30000*\log30000) 然后看了题解才知道还有分块这种方法。。具体的分法就不说了,网上有一大堆,最后的复杂度就是O(N2K+k∗30原创 2017-09-30 18:10:45 · 231 阅读 · 0 评论