题目链接:戳我

对于题目中给的式子:(大家暂且把\(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. 小菜鸟之JAVA面试题库1

    四次挥手 客户端发送释放连接报文,关闭客户端到服务端的数据传输 服务端收到后,发送确认报文给客户端 服务端发送释放连接报文,关闭服务端到客户端的数据传输 客户端发送一个确认报文给服务端 ------- ...

  2. Python中的逻辑运算符

  3. CSS(上)

    目录 CSS(上) 什么是CSS? CSS的优点 CSS的引入方式 行内样式 内部样式 外部样式 CSS的两大特性 CSS选择器 基本选择器 组合选择器 更多选择器 选择器的优先级 CSS(上) 什么 ...

  4. python-redis缓存-pool

    #连接池 import redis pool=redis.ConnectionPool(host='192.168.71.140', port=6379) r = redis.Redis(connec ...

  5. sql server SQL 服务器 - RDBMS

    SQL 服务器 - RDBMS --现代的 SQL 服务器构建在 RDBMS 之上. DBMS - 数据库管理系统(Database Management System) --数据库管理系统是一种可以 ...

  6. Windows2003服务器IIS启用Gzip压缩的设置

    http://jingyan.baidu.com/article/148a192178ec834d71c3b12b.html     步骤 1 2 3 本文介绍的HTTP压缩方式,采用的是Window ...

  7. AES加密解密 Java中运用

    AES全称 Advanced Encryption Standard, 高级加密算法,更加安全,可取代DES. Aes: package com.blog.d201706.encrypt; impor ...

  8. ubuntu自己定义环境变量,替代常用的操作命令

    问题背景是这样的,因为自己会经常用自己的用户链接服务器,比如自己的用户是yongjie,然后服务器的ip是162.105.97.31 所以经常执行的命令是ssh yongjie@162.105.97. ...

  9. 互联网安全架构之常见的Web攻击手段及解决办法

    一.Web 安全常见攻击手段 XSS(跨站脚本攻击) SQL 注入 CSRF(跨站请求伪造) 上传漏洞 DDoS(分布式拒绝服务攻击)等 二.攻击手段原理及解决方案 1.XSS攻击 原理:XSS 攻击 ...

  10. Java中的字符串常量池,栈和堆的概念

    问题:String str = new String(“abc”),“abc”在内存中是怎么分配的?    答案是:堆内存.(Tips:jdk1.8 已经将字符串常量池放在堆内存区) 题目考查的为Ja ...