题目链接:戳我

对于题目中给的式子:(大家暂且把\(y_i\)当作\(y_{i+k}\)来看啦qwq)

\(\sum_{i=1}^{n}(x_i-(y_i+c))^2\)

\(=\sum_{i=1}^n x_i-2x_i(y_i+c)+(y_i+c)^2\)

\(=\sum_{i=1}^nx_i^2-2x_iy_i-2x_ic+y_i^2+2y_ic+c^2\)

\(=\sum_{i=1}^{n} x_i^2-\sum_{i=1}^{n} 2x_iy_i-\sum_{i=1}^n2x_ic+\sum_{i=1}^ny_i^2+\sum_{i=1}^n2y_ic+\sum_{i=1}^nc^2\)

现在问题转化成了最大化\(\sum_{i=1}^{n}x_iy_i\)。

然后我们把y反转,我们大概就得到了这样的一个式子:

\(\sum_{i=1}^{n}x_iy_{n-i+1}\)

唔,卷积QAQ

然后设\(f(x)\)​和\(g(x)\)​,\(f(x)\)​的第\(i\)项系数是\(x_i\)​,\(g(x)\)​的第\(i\)项系数是\(y_{n-i+1}\)​,所以\(f(x)∗g(x)\)​的第\(n+1\)项系数就是第一个环的第n个和第二个环的第1个重合的结果(当然,也可以是前者的第1个和后者的第n个重合的结果,大家可以手动画图比对一下(注意是逆时针分布哦qwq)因为他们的次数相加等于n+1),然后以此类推,断环为链,所以倍长g,n+1~2n项的最大值即为所求。(注意f是要补位的,不过为了对答案不造成影响,要全部补零)

因为c很小,所以暴力枚举就行啦!

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<complex>
#define MAXN 2000000
#define INF 0x3f3f3f3f
using namespace std;
const double pi=acos(-1.0);
int N,M,l,n,m,ans=INF;
int p1,p2,t1,t2,cur_ans=-INF;
int r[MAXN],s1[MAXN],s2[MAXN],S[MAXN];
complex<double> a[MAXN],b[MAXN];
inline void fft(complex<double> *P,int opt)
{
for(int i=0;i<N;i++)
if(i<r[i])
swap(P[i],P[r[i]]);
for(int i=1;i<N;i<<=1)
{
complex<double> W(cos(pi/i),opt*sin(pi/i));
for(int p=i<<1,j=0;j<N;j+=p)
{
complex<double> w(1,0);
for(int k=0;k<i;k++,w*=W)
{
complex<double> X=P[j+k],Y=w*P[j+k+i];
P[j+k]=X+Y,P[j+k+i]=X-Y;
}
}
}
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("ce.in","r",stdin);
#endif
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&s1[i]);
for(int i=1;i<=n;i++) scanf("%d",&s2[i]);
N=n-1,M=2*n-1;
for(int i=0;i<=N;i++) a[i]=s1[i+1];
for(int i=0;i<n;i++) b[i]=s2[n-i];
for(int i=0;i<n;i++) b[i+n]=b[i];
M+=N;
for(N=1;N<=M;N<<=1) l++;
for(int i=0;i<N;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
fft(a,1),fft(b,1);
for(int i=0;i<N;i++) a[i]=a[i]*b[i];
fft(a,-1);
for(int i=0;i<=M;i++) S[i]=(int)(a[i].real()/N+0.5);
for(int i=1;i<=n;i++)
p1+=s1[i]*s1[i],p2+=s2[i]*s2[i],t1+=s1[i],t2+=s2[i];
for(int i=n-1;i<=2*n-1;i++) cur_ans=max(cur_ans,S[i]);
for(int c=-m;c<=m;c++)
{
int ansans=p1+p2+n*c*c+2*c*(t1-t2)-2*cur_ans;
ans=min(ans,ansans);
}
printf("%d\n",ans);
return 0;
}

AHOI/HNOI2017 礼物的更多相关文章

  1. 并不对劲的bzoj4827:loj2020:p3723:[AHOI/HNOI2017]礼物

    题目大意 有两个长度为\(n\)(\(n\leq5*10^4\))的数列\(x_1,x_2,...,x_n\)和\(y_1,y_2,...,y_n\),两个数列里的数都不超过\(m\)(\(m\leq ...

  2. loj#2020 「AHOI / HNOI2017」礼物 ntt

    loj#2020 「AHOI / HNOI2017」礼物 链接 bzoj没\(letex\),差评 loj luogu 思路 最小化\(\sum\limits_1^n(a_i-b_i)^2\) 设改变 ...

  3. 「AHOI / HNOI2017」礼物

    「AHOI / HNOI2017」礼物 题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰 ...

  4. bzoj 4827: [Hnoi2017]礼物 [fft]

    4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...

  5. 「AHOI / HNOI2017」单旋

    「AHOI / HNOI2017」单旋 题目链接 H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据结构,因为代码好写,功能多,效率高,掌握这种 ...

  6. 「AHOI / HNOI2017」影魔

    「AHOI / HNOI2017」影魔 题目描述 解决这类比较复杂的区间贡献问题关键在于找到计算的对象. 比如这道题,我们计算的对象就是区间中间的最大值. 对于点\(i\),我们找到左边第一个比他大的 ...

  7. P3723 [AH2017/HNOI2017]礼物

    题目链接:[AH2017/HNOI2017]礼物 题意: 两个环x, y 长度都为n k可取 0 ~ n - 1      c可取任意值 求 ∑ ( x[i] - y[(i + k) % n + 1] ...

  8. 【BZOJ4827】 [Hnoi2017]礼物

    BZOJ4827 [Hnoi2017]礼物 Solution 如果一串数的增加,不就等于另一串数减吗? 那么我们可以把答案写成另一个形式: \(ans=\sum_{i=1}^n(x_i-y_i+C)^ ...

  9. 4827: [Hnoi2017]礼物

    4827: [Hnoi2017]礼物 链接 分析: 求最小的$\sum_{i=1}^{n}(x_i-y_i)^2$ 设旋转了j位,每一位加上了c. $\sum\limits_{i=1}^{n}(x_{ ...

随机推荐

  1. 【图论好题】ABC #142 Task F Pure

    题目大意 给定一个 $N$ 个点 $M$ 条边的有向图 $G$,无重边.自环.找出图 $G$ 的一个导出子图(induced subgraph) $G'$,且 $G'$ 中的每个点的入度和出度都是 1 ...

  2. 设计模式:状态模式(Status)

    在介绍状态模式之前,我们先来看这样一个实例:你公司力排万难终于获得某个酒店的系统开发项目,并且最终落到了你的头上.下图是他们系统的主要工作(够简单). 当你第一眼看到这个系统的时候你就看出来了这是一个 ...

  3. AppCan模拟器调试

    来源: 1, 页面CSS调试 2, JS调试 3, 插件请打包后手机调试 4, 打开另一个页面示例: appcan.button("#myBtn", "ani-uct&q ...

  4. c# 转换Image为Icon

    /// <summary> /// 转换Image为Icon /// </summary> /// <param name="image">要转 ...

  5. Git复习(五)之多人协作、git push失败、git pull失败

    多人协作 多人协作时,大家都会往master和dev分支上推送各自的修改. 现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆: $ ...

  6. springboot 配合多个cachemanager

    springboot集成 redis需要引入 官方推进用lettuce连接池,Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问 ...

  7. IAP技术原理

    目录 IAP技术原理 更新记录 IAP与ISP的概念及原理 ISP简介 ISP原理 IAP简介 IAP原理 IAP优势 IAP的设计 1.程序启动流程 2.中断向量表的重定位 3.IAP跳转APP函数 ...

  8. js获取url(request)中的参数

    index.htm?参数1=数值1&参数2=数值2&参数3=数据3&参数4=数值4&...... 静态html文件js读取url参数,根据获取html的参数值控制htm ...

  9. TensorFlow入门——MNIST深入

    #load MNIST data import tensorflow.examples.tutorials.mnist.input_data as input_data mnist = input_d ...

  10. Java泛型:利用泛型动态确认方法返回值类型

    根据泛型类型动态返回对象 public <T extends PackObject> T unPackMessage(String interfaceCode, String respVa ...