题解

二项式展开,然后暴力FFT就好了。会发现有一个卷积与c无关,我们找一个最小的项就行了。

Tips:记得要倍长其中一个数组,防止FFT出锅

代码如下:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 5e4+10;
const double pi = acos(-1.0);
struct Complex{
double r,i;
Complex(double r,double i):r(r),i(i){}
Complex(){}
} A[maxn<<4],B[maxn<<4];
Complex operator + (Complex a,Complex b) {
return Complex(a.r+b.r,a.i+b.i);
}
Complex operator - (Complex a,Complex b) {
return Complex(a.r-b.r,a.i-b.i);
}
Complex operator * (Complex a,Complex b) {
return Complex(a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r);
}
void operator *= (Complex &a,Complex b) {
a=a*b;
}
void fft(Complex *a,int n,int inv) {
for(int i = 1,j=n>>1;i<n-1;++i) {
if(i<j) swap(a[i],a[j]);
int k = n>>1;
while(j>=k) j-=k,k>>=1;
j+=k;
}
for(int j = 2;j<=n;j<<=1) {
Complex wn(cos(2*pi/j*inv),sin(2*pi/j*inv));
for(int i = 0;i<n;i+=j) {
Complex w(1,0);
for(int k = i;k<i+(j>>1);++k) {
Complex u(a[k]),t(a[k+(j>>1)]*w);
a[k]=u+t;
a[k+(j>>1)]=u-t;
w*=wn;
}
}
}
if(inv == -1)
for(int i = 0;i<n;++i) a[i].r/=n;
}
int n,m;
int a[maxn],b[maxn];
ll aa,bb,sa,sb;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i = 0;i<n;++i) cin>>a[i];
for(int i = 0;i<n;++i) cin>>b[i];
for(int i = 0;i<n;++i) {
aa+=a[i]*a[i];
bb+=b[i]*b[i];
sa+=a[i];
sb+=b[i];
}
for(int i = 0;i<n;++i) A[n-i].r=a[i],B[i].r=B[i+n].r=b[i];
int lmt = 1;
while(lmt<=2*n) lmt<<=1;
fft(A,lmt,1);fft(B,lmt,1);
for(int i = 0;i<lmt;++i) A[i]*=B[i];
fft(A,lmt,-1);
ll mn = 0;
for(int i = 0;i<2*n;++i) {
mn = max(mn , (ll)(A[i].r+0.5));
}
ll ans = 10000000000000000LL;
for(int c = -m;c<=m;++c) {
ll cc = 1LL*n*c*c;
ans = min(ans , aa+bb+cc+2LL*sa*c-2LL*sb*c-2LL*mn);
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. java 字符串操作和日期操作
  2. python中各种结构的复杂度
  3. [WPF]DataGridHyperlinkColumn网址过长TextTrimming无效
  4. css渐变色DIV
  5. NethServer 7.2 RC1,增加深度数据包检测
  6. 【Convert Sorted Array to Binary Search Tree】cpp
  7. 5天学会jaxws-webservice编程第一天
  8. 用 localhost 访问正常,替换成 IP ,部分 CSS 或 JS 就失效了
  9. Linux脚本中使用特定JDK
  10. Hbase Region Server 启动失败
  11. jquery mobile实现拨打电话功能的几种方法
  12. c#程序内存分配
  13. lucene的两种分页操作
  14. 利用instsrv和srvany来手动安装服务
  15. angular ng-bind
  16. 【Beta阶段】第二次scrum meeting
  17. STL vector用法
  18. python里如何获取当前日期前后N天或N月的日期
  19. symfony 命令
  20. 浅析XSS与XSSI异同

热门文章

  1. 如何上传Packages到PyPI并批量抓取
  2. 使用yarn 安装 Vue-DevTools
  3. MZOJ 1134: 二叉苹果树
  4. chmod / chown /chattr
  5. oracle 查看数据库版本
  6. js 获取数组最后一个元素
  7. 树状数组(hdu-4325,hdu-1166,pat-1057)
  8. 学以致用十六-----Centos7.2编译安装mysql5.6.22
  9. 【设计模式】Javascript设计模式——状态模式(行为型)
  10. js基础学习笔记(六)