https://www.lydsy.com/JudgeOnline/problem.php?id=4827

式子化简一下,发现最后只跟 Σ xi*yi 有关

第二个序列反转,就可以用FFT优化

注意:

循环会想到将序列复制一遍,但只能复制一个序列,

若n=4,第一个序列为1 2 3 4,,第二个序列为5 6 7 8

只复制第一个序列,1 2 3 4 1 2 3 4

当i=5时,f[i]=2*0+1*0+4*8+3*7+2*6+1*5

如果第二个序列也复制,那么上面*0的地方将会出错

#include<cmath>
#include<cstdio>
#include<iostream>
#include<algorithm>using namespace std;const int N=(1<<18)+2;const double pi=acos(-1);int a[N],b[N];struct Complex
{double x,y;Complex(double x_=0,double y_=0):x(x_),y(y_){}Complex operator + (Complex P){return Complex(x+P.x,y+P.y);}Complex operator - (Complex P){return Complex(x-P.x,y-P.y);}Complex operator * (Complex P){return Complex(x*P.x-y*P.y,x*P.y+y*P.x);}
};
typedef Complex E;E A[N],B[N];
int rev[N];int f[N];void read(int &x)
{x=0; char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
}void fft(E *a,int len,int ty)
{for(int i=0;i<len;++i)if(i<rev[i]) swap(a[i],a[rev[i]]);for(int i=1;i<len;i<<=1){E wn(cos(pi/i),ty*sin(pi/i));for(int p=i<<1,j=0;j<len;j+=p){E w(1,0);for(int k=0;k<i;++k,w=w*wn){E x=a[j+k],y=a[j+k+i]*w;a[j+k]=x+y; a[j+k+i]=x-y;}}}if(ty==-1){for(int i=0;i<len;++i) a[i].x=a[i].x/len+0.5;}
}int main()
{int n,m;read(n); read(m);long long sum2=0,sum=0;for(int i=1;i<=n;++i) {read(a[i]);sum+=a[i];sum2+=a[i]*a[i];}for(int i=1;i<=n;++i) {read(b[i]);sum-=b[i];sum2+=b[i]*b[i];}for(int i=0;i<n;++i) A[i].x=a[i+1];for(int i=0;i<n;++i) A[n+i].x=a[i+1];for(int i=n,j=0;i;--i,++j) B[j].x=b[i];int num=3*n-3,len=1,bit=0;while(len<num) len<<=1,bit++;for(int i=0;i<len;++i) rev[i]=(rev[i>>1]>>1)|((i&1)<<bit-1);fft(A,len,1);fft(B,len,1);for(int i=0;i<len;++i) A[i]=A[i]*B[i];fft(A,len,-1);long long ab=0;
/*    ab=A[n-1].x;for(int i=0;i<n-1;++i) ab=max(ab,(long long)A[i+n].x+(long long)A[i].x);
*/for(int i=0;i<n;++i) ab=max(ab,(long long)A[i+n-1].x);ab<<=1;long long mi=2e18;for(int c=-m;c<=m;++c) mi=min(mi,1LL*n*c*c+1LL*2*c*sum);cout<<sum2-ab+mi;
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8683055.html

bzoj千题计划303:bzoj4827: [Hnoi2017]礼物相关推荐

  1. BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...

  2. BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...

  3. BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...

  4. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  5. bzoj千题计划207:bzoj1879: [Sdoi2009]Bill的挑战

    http://www.lydsy.com/JudgeOnline/problem.php?id=1879 f[i][j] 表示匹配了i个字符,匹配字符串的状态为j的方案数 枚举下一个字符是什么 计算加 ...

  6. bzoj千题计划203:bzoj3994: [SDOI2015]约数个数和

    http://www.lydsy.com/JudgeOnline/problem.php?id=3994 设d(x)为x的约数个数,给定N.M,求 用到的一个结论: 证明: 枚举n的约数i,枚举m的约 ...

  7. bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪

    http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...

  8. bzoj千题计划201:bzoj1820: [JSOI2010]Express Service 快递服务

    http://www.lydsy.com/JudgeOnline/problem.php?id=1820 很容易想到dp[i][a][b][c] 到第i个收件地点,三个司机分别在a,b,c 收件地点的 ...

  9. bzoj千题计划248:bzoj3697: 采药人的路径

    http://www.lydsy.com/JudgeOnline/problem.php?id=3697 点分治 路径0改为路径-1 g[i][0/1] 和 f[i][0/1]分别表示当前子树 和 已 ...

最新文章

  1. 将Eclipse代码导入到Android Studio的两种方式
  2. 细节决定成败--打电话和发邮件的细节
  3. 网站建设想要出类拔萃还要从基础上做创新
  4. Android----paint触摸轨迹监听
  5. [GraphQL] Create a GraphQL Schema
  6. 国际化组件 Unicode (ICU) 函数库
  7. 解决ionic3 android 运行出现Application Error - The connection to the server was unsuccessful
  8. java中br.readline_java中br.readLine与 br.read的用法有什么区别??
  9. ZZULIOJ 1076: 三位数求解
  10. 附加一个:为什么要用简单工厂模式
  11. RHEL6 虚拟磁带机使用指南
  12. 关于playframework1.2.4 static 关键字使用的一些思考
  13. Java基础篇:嵌套 if 语句
  14. java检测安卓程序退出_java – 退出应用程序时的Android停止服务
  15. 启发式搜索 (Heuristically Search)-【贪婪最佳优先搜索】和【A*搜索】
  16. malloc函数详解以及例程
  17. 本科生如何快速发表期刊论文,如何选择普刊?
  18. EXCEL日期格式不一致设置统一显示格式的方法
  19. 微信公众号多域名回调系统
  20. [MySQL]-主从同步实战-主从搭建

热门文章

  1. 怎么体验华为鸿蒙系统,华为mate40升级鸿蒙系统体验_华为mate40升级鸿蒙系统使用感受...
  2. arduino与java,Arduino具有与Java和C语言类似的IDE集成开发环境和图形化编程环境
  3. mysql中增加45天三小时_MySQL查询以45天为间隔添加天数并在新列中显示输出
  4. 某大学2021秋季学期Java期末考试范围概述
  5. matlab 基于Topsis的熵权法
  6. 算法设计与分析 4 估计递归函数复杂度所提及算法
  7. 【 C 】高级字符串查找之 strspn 和 strcspn 的思考
  8. 2019年Java和JVM生态系统预测:OpenJDK将成为Java运行时市场领导者
  9. [深入理解文件系统之十二] ext3文件系统的挂载选项和journal
  10. [IE9] 如何让你的网站在IE9和Win7任务栏上更闪亮