#2020. 「HNOI2017」礼物

思路:

  A题进程;

  一眼出式子->各种超时过不去->看题解明白还有fft这个东西->百度文库学习fft->学习dft->学习fft->死活写不出代码->比着大佬博客敲代码->ac->不容易啊。。

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define maxn 500005
  4. #define INF 0x3f3f3f3f
  5. const double pi=acos(-);
  6. struct Complex
  7. {
  8. double r,i;
  9. Complex(double r,double i=):r(r),i(i){}
  10. Complex(){}
  11. };
  12. Complex operator+(Complex a,Complex b)
  13. {
  14. return Complex(a.r+b.r,a.i+b.i);
  15. }
  16. Complex operator-(Complex a,Complex b)
  17. {
  18. return Complex(a.r-b.r,a.i-b.i);
  19. }
  20. Complex operator*(Complex a,Complex b)
  21. {
  22. return Complex(a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r);
  23. }
  24. int n,m,data1[maxn],data2[maxn],rev[maxn],ans=INF;
  25. Complex ai[maxn],bi[maxn],ai2[maxn],bi2[maxn];
  26. inline void in(int &now)
  27. {
  28. char Cget=getchar();now=;
  29. while(Cget>''||Cget<'')Cget=getchar();
  30. while(Cget>=''&&Cget<='')
  31. {
  32. now=now*+Cget-'';
  33. Cget=getchar();
  34. }
  35. }
  36. void fft(Complex *res,int l,int p)
  37. {
  38. for(int i=;i<l;i++) if(i<rev[i]) swap(res[i],res[rev[i]]);
  39. for(int i=;i<l;i<<=)
  40. {
  41. Complex wd=Complex(cos(pi/i),sin(pi/i)*p);
  42. for(int v=;v<l;v+=(i<<))
  43. {
  44. Complex w=Complex(,);
  45. for(int k=;k<i;k++)
  46. {
  47. Complex tmp=res[v+k],tmp_=w*res[v+k+i];
  48. res[v+k]=tmp+tmp_,res[v+k+i]=tmp-tmp_;
  49. w=w*wd;
  50. }
  51. }
  52. }
  53. if(p==-) for(int i=;i<l;i++) res[i].r/=l,res[i].i/=l;
  54. }
  55. int main()
  56. {
  57. freopen("data.txt","r",stdin);
  58. in(n),in(m);
  59. int mxn,lg=,s=;
  60. for(mxn=;mxn<=n*;mxn*=,lg++);
  61. for(int i=;i<mxn;i++) rev[i]=(rev[i>>]>>)|((i&)<<(lg-));
  62. for(int i=;i<=n;i++) in(data1[i]),ai[i]=data1[i],ai2[n-i+]=data1[i];
  63. for(int i=;i<=n;i++) in(data2[i]),bi[n-i+]=data2[i],bi2[i]=data2[i],s+=data2[i];
  64. fft(bi,mxn,),fft(bi2,mxn,),fft(ai,mxn,),fft(ai2,mxn,);
  65. for(int i=;i<mxn;i++) ai[i]=ai[i]*bi[i],ai2[i]=ai2[i]*bi2[i];
  66. fft(ai,mxn,-),fft(ai2,mxn,-);
  67. for(int l=-m+;l<m;l++)
  68. {
  69. int w=;
  70. for(int i=;i<=n;i++) w+=(data1[i]+l)*(data1[i]+l)+data2[i]*data2[i];
  71. for(int i=;i<=n;i++)
  72. {
  73. int v=(int)(ai[i].r+0.1)+(int)(ai2[n-i+].r+0.1)+s*l;
  74. ans=min(ans,w-*v);
  75. }
  76. }
  77. printf("%d\n",ans);
  78. return ;
  79. }

AC日记——「HNOI2017」礼物 LiBreOJ 2020的更多相关文章

  1. AC日记——「HNOI2017」单旋 LiBreOJ 2018

    #2018. 「HNOI2017」单旋 思路: set+线段树: 代码: #include <bits/stdc++.h> using namespace std; #define max ...

  2. AC日记——「SCOI2016」美味 LiBreOJ 2016

    #2016. 「SCOI2016」美味 思路: 主席树: 代码: #include <bits/stdc++.h> using namespace std; #define maxa 26 ...

  3. AC日记——「SCOI2015」情报传递 LiBreOJ 2011

    #2011. 「SCOI2015」情报传递 思路: 可持久化树状数组模板: 代码: #include <bits/stdc++.h> using namespace std; #defin ...

  4. AC日记——「SCOI2016」幸运数字 LiBreOJ 2013

    「SCOI2016」幸运数字 思路: 线性基: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 20005 # ...

  5. AC日记——「SCOI2016」背单词 LiBreOJ 2012

    #2012. 「SCOI2016」背单词 思路: Orz: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 1 ...

  6. AC日记——「SCOI2015」国旗计划 LiBreOJ 2007

    #2007. 「SCOI2015」国旗计划 思路: 跪烂Claris 代码: #include <cstdio> #include <algorithm> #define ma ...

  7. AC日记——「SCOI2015」小凸玩矩阵 LiBreOJ 2006

    「SCOI2015」小凸玩矩阵 思路: 二分+最大流: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 300 ...

  8. AC日记——「SDOI2017」序列计数 LibreOJ 2002

    「SDOI2017」序列计数 思路: 矩阵快速幂: 代码: #include <bits/stdc++.h> using namespace std; #define mod 201704 ...

  9. loj2020 「HNOI2017」礼物

    所有的下标从 \(0\) 开始. 考虑枚举 \(C\) (第一个加上负的等于第二个加上其绝对值)和第二个手链的偏移量 \(p\).答案就是 \[\sum_{i=0}^{n-1}(x_i+C-y_{(i ...

随机推荐

  1. ubuntu14安装tensorflow并测试

    1.ubuntu版本的选择:看了很多博文,建议使用ubuntu14,稳定兼容性好. 2.tensorflow的安装: http://wiki.jikexueyuan.com/project/tenso ...

  2. 手脱ACProtect V1.4X(有Stolen Code)

    1.载入PEID ACProtect V1.4X -> risco 首先需要说明的是,这个壳被偷取的代码非常多,如果去找的话会比较麻烦,所以我们换一种另类的方法,不脱壳也可以使用资源修改器对程序 ...

  3. 获取Web.Config中节点的值

    读取webconfig里面的appSetting和connectionString <appSettings> <add key="SiteURL" value= ...

  4. WPF 与设备无关的单位

    WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都 ...

  5. (转)python编码问题

    时不时总是会碰到令人头疼的编码问题,这里推荐一篇决定好文,需反复诵读之: http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html . . ...

  6. JavaScript中this的用法详解

    JavaScript中this的用法详解 最近,跟身边学前端的朋友了解,有很多人对函数中的this的用法和指向问题比较模糊,这里写一篇博客跟大家一起探讨一下this的用法和指向性问题. 1定义 thi ...

  7. vijos 1464 积木游戏 DP

    描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,…,N的长方体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&qu ...

  8. IntelliJ IDEA使用技巧 (类比pycharm)

    第1章 课程介绍 1)下载及安装2)界面介绍  ... ①界面中左右最边上的小窗口(旋转了90度的字体)都自带了下标,win下快捷键alt+index切换窗口 ②演示效果:模拟时钟,快捷键如,0到10 ...

  9. 【CF1009F】 Dominant Indices (长链剖分+DP)

    题目链接 \(O(n^2)\)的\(DP\)很容易想,\(f[u][i]\)表示在\(u\)的子树中距离\(u\)为\(i\)的点的个数,则\(f[u][i]=\sum f[v][i-1]\) 长链剖 ...

  10. chrome最小字体12px如何修改

    在html标记样式里加入 <style> html { -webkit-text-size-adjust:none } </style> 这样的方式可以设置chrome字体小于 ...