笔记-[AH2017/HNOI2017]礼物
笔记-[AH2017/HNOI2017]礼物
ans_i=&\sum_{j=1}^n(a_j-b_j+i)^2\\
=&\sum_{j=1}^n(a_j^2+b_j^2+i^2-2a_jb_j+2ia_j-2ib_j)\\
=&\sum_{j=1}^na_j^2+\sum_{j=1}^nb_j^2+ni^2+2i\sum_{j=1}^na_j-2i\sum_{j=1}^nb_j-2\sum_{j=1}^na_jb_j\\
\end{split}
\]
#include <bits/stdc++.h>
using namespace std;
//Start
#define lng long long
#define db double
#define mk make_pair
#define pb push_back
#define fi first
#define se second
#define rz resize
const int inf=0x3f3f3f3f;
const lng INF=0x3f3f3f3f3f3f3f3f;
//Data
const int N=3e5;
int n,m;
lng sa,saa,sb,sbb,sab[N+7],ans=INF;
//FFT
const db Pi=acos(-1);
typedef pair<db,db> cp;
cp operator+(const cp a,const cp b){return mk(a.fi+b.fi,a.se+b.se);}
cp operator-(const cp a,const cp b){return mk(a.fi-b.fi,a.se-b.se);}
cp operator*(const cp a,const cp b){return mk(a.fi*b.fi-a.se*b.se,a.fi*b.se+a.se*b.fi);}
vector<cp> a(N+7),b(N+7);
int lim=1,ln,r[N+7];
void FFT(vector<cp>&f,int t){
	for(int i=0;i<lim;i++)if(i<r[i]) swap(f[i],f[r[i]]);
	for(int mid=1;mid<lim;mid<<=1){
		cp wn(mk(cos(Pi/mid),sin(Pi/mid)*t));
		for(int j=0;j<lim;j+=(mid<<1)){
			cp w(mk(1,0));
			for(int k=j;k<mid+j;w=w*wn,k++){
				cp x(f[k]),y(w*f[mid+k]);
				f[k]=x+y,f[mid+k]=x-y;
			}
		}
	}
}
//Main
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1,x;i<=n;i++)
		scanf("%d",&x),a[n+i].fi=a[i].fi=x,sa+=x,saa+=1ll*x*x;
	for(int i=1,x;i<=n;i++)
		scanf("%d",&x),b[n+1-i].fi=x,sb+=x,sbb+=1ll*x*x;
	while(lim<=((n<<1)+n)) lim<<=1,ln++;
	for(int i=0;i<lim;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(ln-1));
	FFT(a,1),FFT(b,1);
	for(int i=0;i<lim;i++) a[i]=a[i]*b[i];
	FFT(a,-1);
	for(int i=0;i<lim;i++) sab[i]=a[i].fi/lim+0.5;
	for(int i=1;i<=n;i++)
		for(int j=-m;j<=m;j++)
			ans=min(ans,saa+sbb+n*j*j+2ll*j*sa-2ll*j*sb-2ll*sab[i+n]);
	printf("%lld\n",ans);
	return 0;
}
												
											笔记-[AH2017/HNOI2017]礼物的更多相关文章
- P3723 [AH2017/HNOI2017]礼物
		
题目链接:[AH2017/HNOI2017]礼物 题意: 两个环x, y 长度都为n k可取 0 ~ n - 1 c可取任意值 求 ∑ ( x[i] - y[(i + k) % n + 1] ...
 - 洛谷 P3723 [AH2017/HNOI2017]礼物 解题报告
		
P3723 [AH2017/HNOI2017]礼物 题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个 ...
 - [Luogu P3723] [AH2017/HNOI2017]礼物  (FFT 卷积)
		
题面 传送门:洛咕 Solution 调得我头大,我好菜啊 好吧,我们来颓柿子吧: 我们可以只旋转其中一个手环.对于亮度的问题,因为可以在两个串上增加亮度,我们也可以看做是可以为负数的. 所以说,我们 ...
 - [AH2017/HNOI2017]礼物(FFT)
		
题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一 ...
 - [AH2017/HNOI2017]礼物
		
题解: 水题 化简一波式子会发现就是个二次函数再加上一个常数 而只有常数中的-2sigma(xiyi)是随移动而变化的 所以只要o(1)求出二次函数最大值然后搞出sigma(xiyi)就可以了 这个东 ...
 - 【文文殿下】[AH2017/HNOI2017]礼物
		
题解 二项式展开,然后暴力FFT就好了.会发现有一个卷积与c无关,我们找一个最小的项就行了. Tips:记得要倍长其中一个数组,防止FFT出锅 代码如下: #include<bits/stdc+ ...
 - BZOJ4827:[AH2017/HNOI2017]礼物——题解
		
https://www.lydsy.com/JudgeOnline/problem.php?id=4827 https://www.luogu.org/problemnew/show/P3723 题面 ...
 - Luogu 3723 [AH2017/HNOI2017]礼物
		
BZOJ 4827 $$\sum_{i = 1}^{n}(x_i - y_i + c)^2 = \sum_{i = 1}^{n}(x_i^2 + y_i^2 + c^2 - 2 * x_iy_i + ...
 - 【[AH2017/HNOI2017]礼物】
		
题目 又是我不会做的题了 看看柿子吧 \[\sum(a_i+c-b_i)^2\] 最小化这个柿子 之所以不写下标是因为我们这个\(\{a\},\{b\}\)可以循环同构 那就开始化吧 \[\sum(a ...
 
随机推荐
- 你只会用 StringBuilder?试试 StringJoiner,真香!
			
你只会用 StringBuilder/ StringBuffer 拼接字符串? 那你就 OUT 了!! 如果需要拼接分隔符的字符串,建议使用 Java 8 中的这款拼接神器:StringJoiner, ...
 - Java 类型信息详解和反射机制
			
本文部分摘自 On Java 8 RTTI RTTI(RunTime Type Information)运行时类型信息,能够在程序运行时发现和使用类型信息,把我们从只能在编译期知晓类型信息并操作的局限 ...
 - 使用@Validated校验数据(除数据库做辅助)
			
一.controller层 /** * 使用@Validated来进行校验 * @author HuangJingNa * @date 2019年12月23日 下午6:02:20 * * @param ...
 - 【Redis】利用 Redis 实现分布式锁
			
技术背景 首先我们需要先来了解下什么是分布式锁,以及为什么需要分布式锁. 对于这个问题,我们可以简单将锁分为两种--内存级锁以及分布式锁,内存级锁即我们在 Java 中的 synchronized 关 ...
 - C语言设计模式(命令模式)
			
#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) typedef int (*parse_func)(const char *data,size_t len ...
 - matlab 第五章单元数组、字符串作业
			
1.创建 2×2 单元数组,第 1.2 个元素为字符串,第三个元素为整型变量,第四个元素为双精度(double)类型,并将其用图形表示. A=cell(2,2); A(1,1)={'mat'}; A( ...
 - Nmap详解
			
扫描方式 -Pn/-P0:扫描前不用ping测试目标是否可达,默认所有目标端口都可达 -sT:TCP Connect扫描,进行完整的TCP三次握手,该类型扫描已被检测,且会在目标日志中记录大量连接请求 ...
 - MySQL第01课- CentOS + 单实例MySql编译安装总结
			
2016年2月,从oracle转向MySql ,碰上几个坑,特此记录 总结 1.注意环境变量.配置文件,操作过程不能出错 2.相比rpm方式安装,编译安装方式可以指定安装路径,再说安装是简单活,将来安 ...
 - FL Studio 插件使用教程 —— 3x Osc(上)
			
在FL Studio20 中,3x Osc是继TS404插件之后资历最老的插件之一,也是FL Studio20 中最重要.使用率最高的插件之一.相比别的FL Studio20内置插件,3x Osc 相 ...
 - LeetCode 037 Sudoku Solver
			
题目要求:Sudoku Solver Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells ...