【HNOI2017】礼物
题面
题解
显然两个手环只需要一个的亮度增加\(c \in [-m, m]\)和原题是等价的。
于是可以写成这样一个公式:
\]
于是最后只有\(-2\sum_{i=1}^n x_iy_{i+k}\)不是常数项(假设\(c\)是常数)
于是现在问题变成了求\(\sum_{i=1}^nx_iy_{i+k}\)的最大值。
这个时候就需要用到一些套路。
我们将序列\(y\)反过来然后在后面接一遍,变成多项式卷积。
然后我们可以看出\(\sum x_iy_{i+k}\)就是\(x^{n+k-1}\)的系数,
然后\(\because m \leq 100\),暴力枚举\(c\)即可。
代码
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define RG register
#define clear(x, y) memset(x, y, sizeof(x));
using namespace std;
inline int read()
{
int data=0, w=1;
char ch=getchar();
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1, ch=getchar();
while(ch>='0'&&ch<='9') data=(data<<3)+(data<<1)+(ch^48), ch=getchar();
return data*w;
}
const int maxn(2000010);
const double pi(acos(-1));
int d[maxn];
int s[maxn], ans=2147483647, cnt;
int n, m, r[maxn], N, M, c[maxn];
complex<double> a[maxn], b[maxn];
template<int opt>
inline void FFT(complex<double> *p)
{
for(RG int i=0;i<N;i++) if(i<r[i]) swap(p[i], p[r[i]]);
for(RG int i=1;i<=N;i<<=1)
{
RG complex<double> rot(cos(pi/i), opt*sin(pi/i));
for(RG int j=0;j<N;j+=(i<<1))
{
RG complex<double> w(1, 0);
for(RG int k=0;k<i;k++, w*=rot)
{
complex<double> x=p[j+k], y=w*p[j+k+i];
p[j+k]=x+y; p[j+k+i]=x-y;
}
}
}
}
inline void init()
{
M=n+(N=n-1);
for(RG int i=1;i<=n;i++) a[i-1]=d[i];
for(RG int i=0;i<n;i++) b[i]=b[i+n]=c[n-i];
M+=N; for(N=1;N<=M;N<<=1) ++cnt;
for(RG int i=0;i<N;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(cnt-1));
FFT<1>(a); FFT<1>(b); for(RG int i=0;i<N;i++) a[i]*=b[i];
FFT<-1>(a);
for(RG int i=0;i<=M;i++) s[i]=(int)(a[i].real()/N+0.5);
}
int main()
{
n=read(); m=read();
for(RG int i=1;i<=n;i++) d[i]=read();
for(RG int i=1;i<=n;i++) c[i]=read();
init();
int o=0, p=0, q=0, r=0, maxs=-ans;
for(RG int i=1;i<=n;i++) o+=d[i]*d[i], p+=c[i]*c[i], q+=d[i], r+=c[i];
for(RG int i=n-1;i<(n<<1);i++) maxs=max(maxs, s[i]);
for(RG int C=-m;C<=m;C++)
{
int res=o+p+C*C*n+2*C*(q-r)-(maxs << 1);
ans=min(res, ans);
}
printf("%d\n", ans);
return 0;
}
【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\\ =& ...
- [bzoj4827][Hnoi2017]礼物_FFT
礼物 bzoj-4827 Hnoi-2017 题目大意:给定两个长度为$n$的手环,第一个手环上的$n$个权值为$x_i$,第二个为$y_i$.现在我可以同时将所有的$x_i$同时加上自然数$c$.我 ...
随机推荐
- [Android] 锁定屏幕
最近玩的比较欢脱,欠了好多东西没写.今天先简单地补一篇简单的内容.就是最近涉及到一个锁定Android设备屏幕的设计,大概就是通过一个按钮或者服务消息,来控制设备界面完全锁定,不能点击任何东西.感觉上 ...
- 重置AD用户密码
$cc = import-csv D:\Powershell\Tauba.csv foreach ($c in $cc) { $c.username $pwd = $c.password get-ad ...
- python设计模式之工厂模式
一.理解工厂模式 在面向对象编程中,术语“工厂”表示一个负责创建替他类型对象的类.通常情况下,作为一个工厂的类有一个对象以及与它关联的多个方法.客户端使用某些参数调用此方法,之后,工厂会据此创建所需类 ...
- JDOM 操作XML
http://www.cnblogs.com/hoojo/archive/2011/08/11/2134638.html 可扩展标记语言——eXtensible Markup Language 用户可 ...
- RSA 非对称加密,私钥转码为pkcs8 错误总结
RSA 非对称加密,私钥转码为pkcs8 错误总结 最近在和某上市公司对接金融方面的业务时,关于RSA对接过程中遇到了一个坑,特来分享下解决方案. 该上市公司简称为A公司,我们简称为B公司.A-B两家 ...
- 陈远波(java)--Git 入门
本章节讲解思路:1.在Git hup官网注册一个Git账号:2.下载git bash管理工具 3.在git bash上绑定GitHup账号密码: 一:进入GitHup官网:https://githu ...
- curl_init 接口
<?php// +----------------------------------------------------------------------// | ThinkPHP [ WE ...
- 离线安装Cloudera Manager 5和CDH5(最新版5.9.3) 完全教程(二)基础环境安装
一.安装CentOS 6.5 x64 具体安装过程自行百度 1.1 修改IP地址 [root@master ~]# vi /etc/sysconfig/network DEVICE=eth0 TYPE ...
- Android SDK4/5/6/7,相册、拍照及裁剪功能及遇见的坑
保存照片和视频到系统相册显示- http://blog.csdn.net/chendong_/article/details/52290329 Android 7.0 之拍照与图片裁剪适配-http: ...
- Windows下安装Tensorflow—GPU版本
https://blog.csdn.net/weixin_39290638/article/details/80045236