【题目大意】

【思路】

很好这很FFT……

想了半天也没明白到底什么是卷积∑的上下界,我当初学的时候没说一定要从0开始啊quq

我还是背不出FFT的模板我要狗带了

我上面写的什么乱七八糟的,要什么数学,意识流脑补一下就好了。用人话翻译一下:

先看一下这个式子:盗图图源

(当然我的程序里下标是从0开始的,差不多啦)

是不是比写∑什么豁然开朗很多啦!

前半部分是从0开始的,且j-1+1=j,显然卷积搞一下。

后面不是从0开始的,但是实在n-1结束的,我们把所有的q左右颠倒过来,仍然满足和是相等的,然后卷积一下,再倒回来减。

好像依然不是人话,意会一下呗。

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<cstdlib>
  5. #include<cmath>
  6. #include<complex>
  7. #define pi acos(-1)
  8. using namespace std;
  9. typedef complex<double> com;
  10. typedef long long ll;
  11. const int MAXN=;
  12. double q[MAXN];
  13. com a[MAXN],b[MAXN],c[MAXN],e1[MAXN],e2[MAXN];
  14. int m,n,tmpn,L,Rev[MAXN];
  15. void get_bit(){for (n=,L=;n<m;n<<=) L++;}
  16. void get_Rtable(){for (int i=;i<n;i++) Rev[i]=(Rev[i>>]>>)|((i&)<<(L-));}
  17. void multi(com* a,com* b){for (int i=;i<n;i++) a[i]*=b[i];}
  18.  
  19. void FFT(com* a,int flag)
  20. {
  21. for (int i=;i<n;i++)if(i<Rev[i])swap(a[i],a[Rev[i]]); //利用逆序表,快速求逆序
  22. for (int i=;i<n;i<<=)
  23. {
  24. com wn(cos(*pi/(i*)),flag*sin(*pi/(i*)));
  25. for (int j=;j<n;j+=(i<<))
  26. {
  27. com w(,);
  28. for (int k=;k<i;k++,w*=wn)
  29. {
  30. com x=a[j+k],y=w*a[j+k+i];
  31. a[j+k]=x+y;
  32. a[j+k+i]=x-y;
  33. }
  34. }
  35. }
  36. if (flag==-) for (int i=;i<n;i++) a[i]/=n;
  37. }
  38.  
  39. void init()
  40. {
  41. scanf("%d",&n);
  42. tmpn=n;
  43. for (int i=;i<n;i++) scanf("%lf",&q[i]);
  44. for (int i=;i<n;i++) a[i]=(q[i]),c[i]=(q[n--i]);
  45. for(int i=;i<n;i++) b[i]=(1.0/i/i);
  46. //b仅仅和差有关,还是和下标志一一对应的,不要写成1.0/(i+1)/(i+1)
  47. }
  48.  
  49. void solve()
  50. {
  51. m=n<<;//相乘后的位数是原来的2倍
  52. get_bit();
  53. get_Rtable();
  54. FFT(a,);
  55. FFT(b,);
  56. FFT(c,);
  57. multi(a,b);
  58. multi(c,b);
  59. FFT(a,-);
  60. FFT(c,-);
  61. for (int i=;i<tmpn;i++) printf("%.3f\n",a[i].real()-c[tmpn-i-].real());//不要忘了最后还要把c颠倒回来
  62. }
  63.  
  64. int main()
  65. {
  66. init();
  67. solve();
  68. }

【FFT卷积】BZOJ3527-力的更多相关文章

  1. BZOJ_2194_快速傅立叶之二_(FFT+卷积)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2194 给出序列\(a[0],a[1],...,a[n-1]\)和\(b[0],b[1],... ...

  2. [Luogu P3338] [ZJOI2014]力 (数论 FFT 卷积)

    题面 传送门: 洛咕 BZOJ Solution 写到脑壳疼,我好菜啊 我们来颓柿子吧 \(F_j=\sum_{i<j}\frac{q_i*q_j}{(i-j)^2}-\sum_{i>j} ...

  3. 【BZOJ】3527: [Zjoi2014]力(fft+卷积)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 好好的一道模板题,我自己被自己坑了好久.. 首先题目看错.......什么玩意.......首 ...

  4. BZOJ_3527_[ZJOI2014]_力_(FFT+卷积)

    描述 题面: http://wenku.baidu.com/link?url=D2ORnA9xjgSxa2GlYLB7gGiYgBcXsy-Aw0kVYTjTE-iYhH1s7h8xXGmnaMwl3 ...

  5. [ZJOI2014][bzoj3527]力 [FFT]

    题面 传送门 思路 把要求的公式列出来: $E_i=\frac{F_i}{q_i}=\sum_{j=1}^i\frac{q_j}{\left(i-j\right)^2}-\sum_{j=i+1}^n\ ...

  6. BZOJ.2194.快速傅立叶之二(FFT 卷积)

    题目链接 \(Descripiton\) 给定\(A[\ ],B[\ ]\),求\[C[k]=\sum_{i=k}^{n-1}A[i]*B[i-k]\ (0\leq k<n)\] \(Solut ...

  7. [Luogu P3723] [AH2017/HNOI2017]礼物 (FFT 卷积)

    题面 传送门:洛咕 Solution 调得我头大,我好菜啊 好吧,我们来颓柿子吧: 我们可以只旋转其中一个手环.对于亮度的问题,因为可以在两个串上增加亮度,我们也可以看做是可以为负数的. 所以说,我们 ...

  8. FFT卷积相加模板

    struct Complex { double r,i; Complex(double _r,double _i):r(_r),i(_i){} Complex(){} Complex operator ...

  9. SSE图像算法优化系列十一:使用FFT变换实现图像卷积。

    本文重点主要不在于FFT的SSE优化,而在于使用FFT实现快速卷积的相关技巧和过程. 关于FFT变换,有很多参考的代码,特别是对于长度为2的整数次幂的序列,实现起来也是非常简易的,而对于非2次幂的序列 ...

随机推荐

  1. velocity & freemarker

    一.Velocity Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅使用简单的模板语言(template language)来引用由java代码定义的 ...

  2. js_面向对象设计和行为委托设计模式

    最近换了新工作,面试过程中有多多少少的问题没有给的出答案,为自己的技术短板而促急. javascript中万物皆对象(键:值构成的一种数据),暂且不讨论这个句话的对与错,可以想象对象在javascri ...

  3. Angular2.0 基础: Form

    对于Angular2.0 的Form表单中的隐藏和验证,个人觉得还是挺有意思的. 1.通过ngModel 跟踪修改状态与验证. 在表单中使用 ngModel 可以获得更多的控制权,包括一些常用的验证. ...

  4. C++学习之路(四):线程安全的单例模式

    (一)简单介绍 单例模式分为两种类型:懒汉模式和饿汉模式. 懒汉模式:在实际类对象被调用时才会产生一个新的类实例,并在之后返回这个实例.多线程环境下,多线程可能会同时调用接口函数创建新的实例,为了防止 ...

  5. linux中断线程化分析【转】

    转自:http://blog.csdn.net/qq405180763/article/details/24120895 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在为3.8版本的Li ...

  6. DTW 算法(转)

    DTW为(Dynamic Time Warping,动态时间归准)的简称.应用很广,主要是在模板匹配中,比如说用在孤立词语音识别,计算机视觉中的行为识别,信息检索等中.可能大家学过这些类似的课程都看到 ...

  7. [session篇]看源码学习session(一)

    假如你是使用过或学习过PHP,你一定觉得很简单.session只不过是$_SESSION就可以搞得,这还不简单只是对一个key-value就能工作了.我觉得可以大多数的phper都是这样的,这是语言本 ...

  8. AspxGridView 表中的ASPxHyperLink不导出到excel

    在软件中 因为要连接到其他的页面所以类型转成了ASPxHyperLink,但是用官方的导出控件导出到excel之后,连接依旧保留着, 目的:去除导出来的连接 方法:把之前的ASPxHyperLink转 ...

  9. spring mvc注解文件上传下载

    需要两个包: 包如何导入就不介绍了,前端代码如下(一定要加enctype="multipart/form-data"让服务器知道是文件上传): <form action=&q ...

  10. linux命令(10):ps命令

    1.查看mysql进程数: ps -ef | grep "mysql" | grep -v "grep" | wc –l 2.监控CPU状态:ps –au 3. ...