【BZOJ4827】【HNOI2017】礼物
强省HN弱省HA……(读作强省湖南弱省蛤
原题:
然后可以发现两边的项都可以o(n)预处理使得在枚举c后可以O(1)计算,中间的是个循环卷积
枚举c和k后FFT即可
代码(还没写
现在写了:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
#define ll long long
const ll inf=(ll)(<<);
int rd(){int z=,mk=; char ch=getchar();
while(ch<''||ch>''){if(ch=='-')mk=-; ch=getchar();}
while(ch>=''&&ch<=''){z=(z<<)+(z<<)+ch-''; ch=getchar();}
return z*mk;
}
int wtp=,wtc[];
void wt(int x,char y){
if(!x){ putchar(''); return ;}
if(x<) putchar('-'),x=-x;
while(x) wtc[++wtp]=x%+'',x/=;
while(wtp) putchar(wtc[wtp--]);
putchar(y);
}
struct cp{
double r,i;
cp(double _r=,double _i=): r(_r),i(_i){}
cp operator+(cp x){return cp(r+x.r,i+x.i);}
cp operator-(cp x){return cp(r-x.r,i-x.i);}
cp operator*(cp x){return cp(r*x.r-i*x.i,r*x.i+i*x.r);}
};
int n,m; ll S=,s=;
cp a[],b[],tmp[],_x,_y,c[];
int rvs[],dg[],N,L;
void fft(cp x[],int mk){
for(int i=;i<N;++i) tmp[i]=x[rvs[i]];
for(int i=;i<N;++i) x[i]=tmp[i];
for(int i=;i<=N;i<<=){
cp wn(cos(*M_PI/i),mk*sin(*M_PI/i));
for(int k=;k<N;k+=i){
cp w(,);
for(int j=k;j<k+(i>>);++j){
_x=x[j],_y=x[j+(i>>)]*w;
x[j]=_x+_y,x[j+(i>>)]=_x-_y;
w=w*wn;
}
}
}
if(mk==-) for(int i=;i<N;++i) x[i].r/=N;
}
int main(){//freopen("ddd.in","r",stdin);
cin>>n>>m;
int x;
for(int i=;i<n;++i){
x=rd();
a[n--i]=cp(x);
S+=x*x,s+=x;
}
for(int i=;i<n;++i){
x=rd();
b[i]=b[i+n]=cp(x);
S+=x*x,s-=x;
}
s<<=;
for(N=,L=;N<=(n<<);N<<=,++L); N<<=,++L;
for(int i=;i<N;++i){
for(int j=i,k=;j;j>>=,++k) dg[k]=j&;
for(int j=;j<L;++j) rvs[i]=(rvs[i]<<)|dg[j];
}
/*for(int i=0;i<N;++i) cout<<(int)(a[i].r+0.5)<<" ";
cout<<endl;
for(int i=0;i<N;++i) cout<<(int)(b[i].r+0.5)<<" ";
cout<<endl;*/
fft(a,),fft(b,);
for(int i=;i<N;++i) c[i]=a[i]*b[i];
fft(c,-);
ll ans=inf;
for(int i=;i<n;++i)for(int j=;j<=m;++j){
ans=min(ans,S+j*s+n*j*j-*(ll)(c[n-+i].r+0.5));
ans=min(ans,S-j*s+n*j*j-*(ll)(c[n-+i].r+0.5));
}
//for(int i=0;i<N;++i) cout<<(int)(c[i].r+0.5)<<" ";
cout<<ans<<endl;
return ;
}
【BZOJ4827】【HNOI2017】礼物的更多相关文章
- [bzoj4827][Hnoi2017]礼物_FFT
礼物 bzoj-4827 Hnoi-2017 题目大意:给定两个长度为$n$的手环,第一个手环上的$n$个权值为$x_i$,第二个为$y_i$.现在我可以同时将所有的$x_i$同时加上自然数$c$.我 ...
- [BZOJ4827][Hnoi2017]礼物(FFT)
4827: [Hnoi2017]礼物 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1315 Solved: 915[Submit][Status] ...
- BZOJ4827 [Hnoi2017]礼物 多项式 FFT
原文链接http://www.cnblogs.com/zhouzhendong/p/8823962.html 题目传送门 - BZOJ4827 题意 有两个长为$n$的序列$x$和$y$,序列$x,y ...
- bzoj4827 [Hnoi2017]礼物
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...
- bzoj千题计划303:bzoj4827: [Hnoi2017]礼物
https://www.lydsy.com/JudgeOnline/problem.php?id=4827 式子化简一下,发现最后只跟 Σ xi*yi 有关 第二个序列反转,就可以用FFT优化 注意: ...
- 2018.11.16 bzoj4827: [Hnoi2017]礼物(ntt)
传送门 nttnttntt 入门题. 考虑展开要求的式子∑i=0n−1(xi−yi−c)2\sum_{i=0}^{n-1}(x_i-y_i-c)^2∑i=0n−1(xi−yi−c)2 => ...
- BZOJ4827: [Hnoi2017]礼物(FFT 二次函数)
题意 题目链接 Sol 越来越菜了..裸的FFT写了1h.. 思路比较简单,直接把 \(\sum (x_i - y_i + c)^2\) 拆开 发现能提出一坨东西,然后与c有关的部分是关于C的二次函数 ...
- BZOJ4827:[HNOI2017]礼物(FFT)
Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在 ...
- 【BZOJ4827】 [Hnoi2017]礼物
BZOJ4827 [Hnoi2017]礼物 Solution 如果一串数的增加,不就等于另一串数减吗? 那么我们可以把答案写成另一个形式: \(ans=\sum_{i=1}^n(x_i-y_i+C)^ ...
- bzoj 4827: [Hnoi2017]礼物 [fft]
4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...
随机推荐
- codeforces437C
The Child and Toy CodeForces - 437C On Children's Day, the child got a toy from Delayyy as a present ...
- Ubuntu16.04 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 解决流程
mysql版本 5.7.22 安装完成后出现问题 ERROR 1698 (28000): Access denied for user 'root'@'localhost' 可能是因为初始密码为空:按 ...
- 小程序源码下载[demo整理自github]
微信小程序的火热程度大家都有所了解,也有很多牛人写了不错的小程序,今天ytkah就整理一些github上的小程序开源项目,源码可以直接下载来用,感兴趣的朋友赶紧去看看吧!以下小程序排名按star的数量 ...
- Java中的split函数拆分后变成null的问题
对于一些特殊的情况,split拆分后并没有保留全的元素 如下例子: String x ="a,,,,,,"; String []y = x.split(",") ...
- 利用Python攻破12306的最后一道防线
各位同学大家好,我是强子,好久没跟大家带来最新的技术文章了,最近有好几个同学问我12306自动抢票能否实现,我就趁这两天有时间用Python做了个12306自动抢票的项目,在这里我来带着大家一起来看看 ...
- 自学Zabbix7.1 IT services
自学Zabbix7.1 IT services 1. 概念IT Services 服务器或者某项服务.业务的可用率,不懂技术的上级领导会过问最近服务器可用率如何.所有api的状况怎么样?通常一些技术人 ...
- 自学Python1.6-Centos内英文语法切换
自学Python之路 自学Python1.6-Centos内中英文语法切换 测试采用是官方Centos7.0系统 1.添加中文输入法 打开设置---区域和语言--->在输入源最下面有一个 + 号 ...
- history新增方法
history对象包含用户访问过的URL,属于window对象的一部分,传统的使用中,它拥有length属性(浏览器历史列表URL数目) 及back().forward().go()方法. 而新的H5 ...
- 深入理解Adaboost算法
理解算法确实是欲速则不达,唯有一步一步慢慢看懂,然后突然觉得写的真的太好了,那才是真的有所理解了. Adaboost的两点关键点: 1. 如何根据弱模型的表现更新训练集的权重: 2. 如何根据弱模型的 ...
- scrapy 部署
下面简单介绍两种部署的方式,第一种也是我们最常用的crontab定时任务+日志,第二种则是scrapyd部署. 遇到的第一个问题,就是如何将编写好的spider启动: 最简单的方式: 1.在spide ...