luoguP3723 HNOI2017 礼物
首先,两个手环增加非负整数亮度,等于其中一个增加一个整数亮度,可以为负。
令增加量为\(x\),旋转以后的原数列为,那么在不考虑转圈圈的情况下,现在的费用就是:
\]
- 即
 
\]
- 前面两个是确定的,后面是\(y=ax^2+bx+c\)的形式,那么\(x=\frac{b}{-2a}\)。
 - 所以只需要使得\(\sum a_i*b_i\)最大即可。
 - 直接做不好做,翻转\(a\):
 
\]
- 这不是一个卷积吗~
 - 把\(b\)倍长后,其中卷起来后的每一项都对应了一种反转方案,直接\(fft\)后取最小值。
 - 然后把前面的不变项加上,就是答案了。
 
#include<bits/stdc++.h>
#define R register int
#define db double
#define il inline
#define ll long long
using namespace std;
const int N=1000000;
const db pi=acos(-1.0);
int n,m,x,nw,pik,a[N],b[N];ll ans;
il int gi(){
    R x=0,k=1;char c=getchar();
    while(c!='-'&&(c<'0'||c>'9'))c=getchar();
    if(c=='-')k=-1,c=getchar();
    while(c<='9'&&c>='0')x=(x<<3)+(x<<1)+c-'0',c=getchar();
    return x*k;
}
il int sqr(R x){return x*x;}
namespace FFT{
	int m,lim=1,er,Mx=-2e9,rd[N];
	struct G{
		db x,y;
		G (db xx=0,db yy=0){x=xx,y=yy;}
	}x[N],y[N];
	G operator + (G a,G b){return G(a.x+b.x,a.y+b.y);}
	G operator - (G a,G b){return G(a.x-b.x,a.y-b.y);}
	G operator * (G a,G b){return G(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);}
	void fft(G *A,R op){
		for(R i=0;i<lim;++i)if(i<rd[i])swap(A[i],A[rd[i]]);
		for(R mid=1;mid<lim;mid<<=1){
			G Wn(cos(pi/mid),op*sin(pi/mid));
			for(R len=mid<<1,j=0;j<lim;j+=len){
				G W(1,0);
				for(R k=0;k<mid;++k,W=W*Wn){
					G x=A[j+k],y=W*A[j+k+mid];
					A[j+k]=x+y,A[j+k+mid]=x-y;
				}
			}
		}
	}
	ll sol(){
		reverse(a+1,a+n+1),m=n+n;
		for(R i=0;i<n;++i)x[i].x=a[i+1],y[i].x=b[i+1];
		for(R i=n;i<n+n;++i)y[i]=y[i-n];
		while(lim<=n+m)lim<<=1,er++;
		for(R i=0;i<lim;++i)rd[i]=(rd[i>>1]>>1)|((i&1)<<(er-1));
		fft(x,1),fft(y,1);
		for(R i=0;i<lim;++i)x[i]=x[i]*y[i];
		fft(x,-1);
		for(R i=0;i<lim;++i)Mx=max(Mx,(int)(x[i].x/lim+0.5));
		return Mx;
	}
}
int main(){
	n=gi(),m=gi();
	for(R i=1;i<=n;++i)a[i]=gi(),ans+=sqr(a[i]),x-=a[i];
	for(R i=1;i<=n;++i)b[i]=gi(),ans+=sqr(b[i]),x+=b[i];
	nw=-x,x/=n,x--,pik=n*sqr(x)+2*x*nw;
	x++,pik=min(pik,n*sqr(x)+2*x*nw);
	x++,pik=min(pik,n*sqr(x)+2*x*nw);
	ans+=pik-(FFT::sol()<<1),cout<<ans<<endl;
	return 0;
}
												
											luoguP3723 HNOI2017 礼物的更多相关文章
- bzoj 4827: [Hnoi2017]礼物 [fft]
		
4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...
 - P3723 [AH2017/HNOI2017]礼物
		
题目链接:[AH2017/HNOI2017]礼物 题意: 两个环x, y 长度都为n k可取 0 ~ n - 1 c可取任意值 求 ∑ ( x[i] - y[(i + k) % n + 1] ...
 - 【BZOJ4827】 [Hnoi2017]礼物
		
BZOJ4827 [Hnoi2017]礼物 Solution 如果一串数的增加,不就等于另一串数减吗? 那么我们可以把答案写成另一个形式: \(ans=\sum_{i=1}^n(x_i-y_i+C)^ ...
 - 4827: [Hnoi2017]礼物
		
4827: [Hnoi2017]礼物 链接 分析: 求最小的$\sum_{i=1}^{n}(x_i-y_i)^2$ 设旋转了j位,每一位加上了c. $\sum\limits_{i=1}^{n}(x_{ ...
 - 【LG3723】[AHOI2017/HNOI2017]礼物
		
[LG3723][AHOI2017/HNOI2017]礼物 题面 洛谷 题解 首先我们将\(c\)看作一个可以为负的整数,那么我们就可以省去讨论在哪个手环加\(c\)的繁琐步骤了 设我们当前已经选好了 ...
 - 洛谷 P3723 [AH2017/HNOI2017]礼物 解题报告
		
P3723 [AH2017/HNOI2017]礼物 题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个 ...
 - [BZOJ4827][Hnoi2017]礼物(FFT)
		
4827: [Hnoi2017]礼物 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1315 Solved: 915[Submit][Status] ...
 - [Luogu P3723] [AH2017/HNOI2017]礼物  (FFT 卷积)
		
题面 传送门:洛咕 Solution 调得我头大,我好菜啊 好吧,我们来颓柿子吧: 我们可以只旋转其中一个手环.对于亮度的问题,因为可以在两个串上增加亮度,我们也可以看做是可以为负数的. 所以说,我们 ...
 - 笔记-[AH2017/HNOI2017]礼物
		
笔记-[AH2017/HNOI2017]礼物 [AH2017/HNOI2017]礼物 \[\begin{split} ans_i=&\sum_{j=1}^n(a_j-b_j+i)^2\\ =& ...
 
随机推荐
- Windows监控——性能指标详解(转)
			
http://blog.csdn.net/yiqin3399/article/details/51730106
 - 安装mangodb
			
1.配置yum源 [root@www ~]# cat /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repo ...
 - 关系/对象映射 多对多关系(@ManyToMany 注释)【重新认识】
			
old: @ManyToMany 注释:表示此类是多对多关系的一边, mappedBy 属性定义了此类为双向关系的维护端, 注意:mappedBy 属性的值为此关系的另一端的属性名. 例如,在Stud ...
 - Flume采集日志
			
角色 Source 数据来源 (exec, kafka, http…)Channel 数据通道 (memory,file,jdbc)Sink 数据目的地 (kafka,hdfs,es…) Agent ...
 - Redis 入门 3.1 热身
			
3.1 热身 1. 获得符合规则的键名列表 KEYS pattern pattern 支持 glob 风格通配符格式 语言 字符组 ? 匹配一个字符 * 匹配任意个(包括0个)字符 [] 匹配括号间的 ...
 - LeetCode.1033-移动石头直到连续(Moving Stones Until Consecutive)
			
这是小川的第386次更新,第414篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第247题(顺位题号是1033).在a,b和c位置的数字线上有三块石头.每次,你在一个终点 ...
 - LeetCode.925-长按的名字(Long Pressed Name)
			
这是悦乐书的第355次更新,第380篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第217题(顺位题号是925).你的朋友正在键盘上输入他的名字. 有时,在键入字符c时, ...
 - SpringBoot常用注解有哪些?
			
@Service: 注解在类上,表示这是一个业务层bean@Controller: 注解在类上,表示这是一个控制层bean@Repository: 注解在类上,表示这是一个数据访问层bean@Comp ...
 - 滚动翻页vue
			
<template> <div class="home"> <div style="height:100%; width:100%;&quo ...
 - 第六次学习总结&&第四次实验总结
			
Java实验报告 班级 1班 学号 20188390 姓名 宋志豪 实验四 类的继承 1.实验目的 (1)掌握类的继承方法: (2)变量的继承和覆盖,方法的继承.重载和覆盖实现: 2.实验内容 实验代 ...