【文文殿下】[AH2017/HNOI2017]礼物
题解
二项式展开,然后暴力FFT就好了。会发现有一个卷积与c无关,我们找一个最小的项就行了。
Tips:记得要倍长其中一个数组,防止FFT出锅
代码如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 5e4+10;
const double pi = acos(-1.0);
struct Complex{
double r,i;
Complex(double r,double i):r(r),i(i){}
Complex(){}
} A[maxn<<4],B[maxn<<4];
Complex operator + (Complex a,Complex b) {
return Complex(a.r+b.r,a.i+b.i);
}
Complex operator - (Complex a,Complex b) {
return Complex(a.r-b.r,a.i-b.i);
}
Complex operator * (Complex a,Complex b) {
return Complex(a.r*b.r-a.i*b.i,a.r*b.i+a.i*b.r);
}
void operator *= (Complex &a,Complex b) {
a=a*b;
}
void fft(Complex *a,int n,int inv) {
for(int i = 1,j=n>>1;i<n-1;++i) {
if(i<j) swap(a[i],a[j]);
int k = n>>1;
while(j>=k) j-=k,k>>=1;
j+=k;
}
for(int j = 2;j<=n;j<<=1) {
Complex wn(cos(2*pi/j*inv),sin(2*pi/j*inv));
for(int i = 0;i<n;i+=j) {
Complex w(1,0);
for(int k = i;k<i+(j>>1);++k) {
Complex u(a[k]),t(a[k+(j>>1)]*w);
a[k]=u+t;
a[k+(j>>1)]=u-t;
w*=wn;
}
}
}
if(inv == -1)
for(int i = 0;i<n;++i) a[i].r/=n;
}
int n,m;
int a[maxn],b[maxn];
ll aa,bb,sa,sb;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i = 0;i<n;++i) cin>>a[i];
for(int i = 0;i<n;++i) cin>>b[i];
for(int i = 0;i<n;++i) {
aa+=a[i]*a[i];
bb+=b[i]*b[i];
sa+=a[i];
sb+=b[i];
}
for(int i = 0;i<n;++i) A[n-i].r=a[i],B[i].r=B[i+n].r=b[i];
int lmt = 1;
while(lmt<=2*n) lmt<<=1;
fft(A,lmt,1);fft(B,lmt,1);
for(int i = 0;i<lmt;++i) A[i]*=B[i];
fft(A,lmt,-1);
ll mn = 0;
for(int i = 0;i<2*n;++i) {
mn = max(mn , (ll)(A[i].r+0.5));
}
ll ans = 10000000000000000LL;
for(int c = -m;c<=m;++c) {
ll cc = 1LL*n*c*c;
ans = min(ans , aa+bb+cc+2LL*sa*c-2LL*sb*c-2LL*mn);
}
cout<<ans<<endl;
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]礼物
笔记-[AH2017/HNOI2017]礼物 [AH2017/HNOI2017]礼物 \[\begin{split} ans_i=&\sum_{j=1}^n(a_j-b_j+i)^2\\ =& ...
- [AH2017/HNOI2017]礼物(FFT)
题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一 ...
- [AH2017/HNOI2017]礼物
题解: 水题 化简一波式子会发现就是个二次函数再加上一个常数 而只有常数中的-2sigma(xiyi)是随移动而变化的 所以只要o(1)求出二次函数最大值然后搞出sigma(xiyi)就可以了 这个东 ...
- 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 ...
随机推荐
- SQL 创建联合主键Table
CREATE TABLE [User_Instance]( [IntanceID] [int] NOT NULL, ) NOT NULL ) ON [PRIMARY] GO SET ANSI_PADD ...
- IDEA导入MySQL包
点击[Project Structure] 点击[Modules] 在点击下面的界面 找到自己下载的MySQL包就OK了
- oracle merge into语法
oracle的merge into语法,在这种情况下: 基于某些字段,存在就更新,不存在就插入 不需要先去判断一下记录是否存在,直接使用merge into oerge into 语法: MERGE ...
- 733. Flood Fill
class Solution { public: int szx,szy; vector<vector<int>> floodFill(vector<vector< ...
- 2019.01.01洛谷 P4725/P4726 多项式对数/指数函数(牛顿迭代)
4725传送门 4726传送门 解析 代码: #include<bits/stdc++.h> #define ri register int using namespace std; in ...
- 2018.11.03 NOIP模拟 图(bfs/最短路)
传送门 显然如果AAA到BBB或者CCC到DDD走的不是最短路一定是有一段路径重合了,于是可以O(n2)bfsO(n^2)bfsO(n2)bfs出两点之间的最短距离然后枚举两个点作为重合的端点来更新答 ...
- ajax from 提交
$.ajax({ cache: true, type: "POST", url:aj ...
- DDR II中的延时参数
CL (CAS latency) CL是从读命令发出到有效数据到DDR端口的延时,以时钟为单位.下图分别表示CL = 3和CL = 4的两种情况, 如果读命令在第n个时钟周期发出,CL = m,则读 ...
- (转)可伸缩性最佳实践:来自eBay的经验
转自:http://www.infoq.com/cn/articles/ebay-scalability-best-practices 在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力.我们所做的 ...
- (动态规划)Max Sum Plus Plus--hdu--1024
http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Othe ...