[AH2017/HNOI2017]礼物(FFT)
题目描述
#include<iostream>
#include<cstdio>
#include<cmath>
#define N 200002
using namespace std;
typedef long long ll;
const double pai=acos(-1.0);
ll ans,sum,sum2,l,L,c[N];
int rev[N],n,m;
inline ll rd(){
ll x=;char c=getchar();bool f=;
while(!isdigit(c)){if(c=='-')f=;c=getchar();}
while(isdigit(c)){x=(x<<)+(x<<)+(c^);c=getchar();}
return f?-x:x;
}
struct fs{
double x,y;
fs(){x=y=;}
fs(double xx,double yy){x=xx;y=yy;}
fs operator +(const fs &b)const{return fs{x+b.x,y+b.y};}
fs operator -(const fs &b)const{return fs{x-b.x,y-b.y};}
fs operator *(const fs &b)const{return fs{x*b.x-y*b.y,x*b.y+y*b.x};}
}a[N],b[N];
inline void FFT(fs *a,int tag){
for(int i=;i<l;++i)if(i>rev[i])swap(a[i],a[rev[i]]);
for(int i=;i<l;i<<=){
fs wn(cos(pai/i),tag*sin(pai/i));
for(int j=;j<l;j+=(i<<)){
fs w(,);
for(int k=;k<i;++k,w=w*wn){
fs x=a[j+k],y=w*a[i+j+k];
a[j+k]=x+y;a[i+j+k]=x-y;
}
}
}
}
int main(){
n=rd();m=rd();
for(int i=;i<=n;++i)a[n-i+].x=rd();
for(int i=;i<=n;++i){
b[i].x=rd();
sum+=a[i].x*a[i].x+b[i].x*b[i].x;
sum2+=a[i].x-b[i].x;
}
l=;L=;
while(l<(n<<))l<<=,L++;
for(int i=;i<l;++i)rev[i]=(rev[i>>]>>)|((i&)<<(L-));
FFT(a,);FFT(b,);
for(int i=;i<l;++i)a[i]=a[i]*b[i];
FFT(a,-);
for(int i=;i<l;++i)a[i].x=(ll)(a[i].x/l+0.1);
for(int i=;i<=n;++i)a[i+n].x+=a[i].x;
for(int i=n+;i<=n<<;++i){
ans=max(ans,(ll)a[i].x);
}
ll x=1e18;
for(int i=sum2/n-;i<=sum2/n+;++i)x=min(x,n*i*i+*i*sum2);
printf("%lld",sum-*ans+x);
return ;
}
[AH2017/HNOI2017]礼物(FFT)的更多相关文章
- [Luogu P3723] [AH2017/HNOI2017]礼物 (FFT 卷积)
题面 传送门:洛咕 Solution 调得我头大,我好菜啊 好吧,我们来颓柿子吧: 我们可以只旋转其中一个手环.对于亮度的问题,因为可以在两个串上增加亮度,我们也可以看做是可以为负数的. 所以说,我们 ...
- LUOGU P3723 [AH2017/HNOI2017]礼物 (fft)
传送门 解题思路 首先我们设变化量为\(r\),那么最终的答案就可以写成 : \[ ans=min(\sum\limits_{i=1}^n(a_i-b_i+r)^2) \] \[ ans=min(\s ...
- 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\) 个 ...
- 笔记-[AH2017/HNOI2017]礼物
笔记-[AH2017/HNOI2017]礼物 [AH2017/HNOI2017]礼物 \[\begin{split} ans_i=&\sum_{j=1}^n(a_j-b_j+i)^2\\ =& ...
- bzoj 4827: [Hnoi2017]礼物 [fft]
4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...
- [AH2017/HNOI2017]礼物(FFT)
[Luogu3723] [DarkBZOJ4827] 题解 首先,有一个结论:两个手环增加非负整数亮度,等于其中一个增加一个整数亮度(可以为负) 设增加亮度为x.求\(\sum_{i=1}^{n}(a ...
- 洛谷P3723 [AH2017/HNOI2017]礼物(FFT)
传送门 首先,两个数同时增加自然数值相当于只有其中一个数增加(此增加量可以小于0) 我们令$x$为当前的增加量,${a},{b}$分别为旋转后的两个数列,那么$$ans=\sum_{i=1}^n(a_ ...
- [AH2017/HNOI2017] 礼物 解题报告 (FFT)
题目链接: https://www.luogu.org/problemnew/show/P3723 题目: 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自 ...
随机推荐
- HDU 2003 求绝对值
http://acm.hdu.edu.cn/showproblem.php?pid=2003 Problem Description 求实数的绝对值. Input 输入数据有多组,每组占一行,每行 ...
- 社交CRM SCRM
社交CRM - 国际版 Binghttps://cn.bing.com/search?FORM=U227DF&PC=U227&q=%E7%A4%BE%E4%BA%A4CRM 社交CRM ...
- 项目管理、软件、禅道 VS JIRA
项目管理软件之争,禅道和JIRA大对比 - 简书https://www.jianshu.com/p/2533c0b7e456 [原创]项目管理软件之争,禅道和JIRA大对比 - zhengqiaoyi ...
- chrome extensions notifications
developer.chrome.comhttps://developer.chrome.com/extensions/notifications notification | MDNhttps:// ...
- java kill thread command line
multithreading - How do you kill a Thread in Java? - Stack Overflowhttps://stackoverflow.com/questio ...
- redux模块化demo
store.js 在redux中 store 是唯一的. import {createStore} from 'redux'; import reducer from './reducer' // 引 ...
- java编程规范(持续更新)
1:非空判断 错误例子: if(user.getUserName().equals("hollis")){ } 这段代码极有可能在实际运行的时候跑出NullPointerExcep ...
- js中的call、apply、bind
在js中每个函数都包含两个非继承而来的方法:call()和apply() call和apply的作用都是在特定的作用域中将函数绑定到另外一个对象上去运行,即可以用来重新定义函数的执行环境,两者仅在定义 ...
- java之序列化
详细内容 连接https://blog.csdn.net/qq_27093465/article/details/78544505 Java 之 Serializable 序列化和反序列化的概念,作用 ...
- 如何调用layer.open打开的的iframe窗口中的JS