题面

题解

显然两个手环只需要一个的亮度增加\(c \in [-m, m]\)和原题是等价的。

于是可以写成这样一个公式:

\[\sum_{i = 1} ^ n(x_i - y_{i+k} + c) ^ 2
\]

于是最后只有\(-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】礼物的更多相关文章

  1. bzoj 4827: [Hnoi2017]礼物 [fft]

    4827: [Hnoi2017]礼物 题意:略 以前做的了 化一化式子就是一个卷积和一些常数项 我记着确定调整值还要求一下导... #include <iostream> #include ...

  2. P3723 [AH2017/HNOI2017]礼物

    题目链接:[AH2017/HNOI2017]礼物 题意: 两个环x, y 长度都为n k可取 0 ~ n - 1      c可取任意值 求 ∑ ( x[i] - y[(i + k) % n + 1] ...

  3. 【BZOJ4827】 [Hnoi2017]礼物

    BZOJ4827 [Hnoi2017]礼物 Solution 如果一串数的增加,不就等于另一串数减吗? 那么我们可以把答案写成另一个形式: \(ans=\sum_{i=1}^n(x_i-y_i+C)^ ...

  4. 4827: [Hnoi2017]礼物

    4827: [Hnoi2017]礼物 链接 分析: 求最小的$\sum_{i=1}^{n}(x_i-y_i)^2$ 设旋转了j位,每一位加上了c. $\sum\limits_{i=1}^{n}(x_{ ...

  5. 【LG3723】[AHOI2017/HNOI2017]礼物

    [LG3723][AHOI2017/HNOI2017]礼物 题面 洛谷 题解 首先我们将\(c\)看作一个可以为负的整数,那么我们就可以省去讨论在哪个手环加\(c\)的繁琐步骤了 设我们当前已经选好了 ...

  6. 洛谷 P3723 [AH2017/HNOI2017]礼物 解题报告

    P3723 [AH2017/HNOI2017]礼物 题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个 ...

  7. [BZOJ4827][Hnoi2017]礼物(FFT)

    4827: [Hnoi2017]礼物 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1315  Solved: 915[Submit][Status] ...

  8. [Luogu P3723] [AH2017/HNOI2017]礼物 (FFT 卷积)

    题面 传送门:洛咕 Solution 调得我头大,我好菜啊 好吧,我们来颓柿子吧: 我们可以只旋转其中一个手环.对于亮度的问题,因为可以在两个串上增加亮度,我们也可以看做是可以为负数的. 所以说,我们 ...

  9. 笔记-[AH2017/HNOI2017]礼物

    笔记-[AH2017/HNOI2017]礼物 [AH2017/HNOI2017]礼物 \[\begin{split} ans_i=&\sum_{j=1}^n(a_j-b_j+i)^2\\ =& ...

  10. [bzoj4827][Hnoi2017]礼物_FFT

    礼物 bzoj-4827 Hnoi-2017 题目大意:给定两个长度为$n$的手环,第一个手环上的$n$个权值为$x_i$,第二个为$y_i$.现在我可以同时将所有的$x_i$同时加上自然数$c$.我 ...

随机推荐

  1. react native中Unable to load script from assets 'index.android.bundle'解决方案

    刚刚朋友问我,说是创建好一个项目,运行后报错:Unable to load script from assets 'index.android.bundle',以前好好的没出现这种现象,于是我找到一个 ...

  2. json_encode无返回结果

    今天写php curl模拟客户端访问测试一个抽奖post数据,拿回来的数据是json,使用json_decode函数就是没结果,百度谷歌好久.终于发现是BOM的文件头造成的, 微软为utf-8文件添加 ...

  3. python 实现线程安全的单例模式

    单例模式是一种常见的设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,服务器的配置信息写在一个文件中online. ...

  4. idea常规设置

    java开发目前很多都是使用IntelliJ IDEA这款神器.废话不多说,官网地址:https://www.jetbrains.com/idea/ 我一直都是保持最新版本,安装之后注册. 首先需要安 ...

  5. Oracle EBS INV 获取现有量等值

    DECLARE L_api_return_status VARCHAR2(1); l_qty_oh NUMBER; l_qty_res_oh NUMBER; l_qty_res NUMBER; l_q ...

  6. 如何在EF Core 使用存储过程

    使用EF Core框架能快速的帮助我们进行常规的数据处理和项目开发,但是ORM虽然好用,但是在许多复杂逻辑的数据处理时,我个人还是偏向用SQL和存储过程的方式去处理,但是研究了一下目前最新版本的EF ...

  7. 【排序算法】冒泡排序(Bubble Sort)

    0. 说明 参考 维基百科中的冒泡排序 冒泡排序 (Bubble Sort) 是与插入排序拥有相等的执行时间,但是两种算法在需要的交换次数却很大地不同. 在最坏的情况,冒泡排序需要 O(n2)  次交 ...

  8. MySQL基础之 支持的数据类型

    MySQL的数值类型 整数类型 字节 有符号 无符号 TINYINT 1 -128~+127 0~255 SAMLLINT 2 -32768~+32767 0~65535 MEDIUMINT 3 -8 ...

  9. Balanced Search Trees

    平衡搜索树 前面介绍的二叉搜索树在最坏情况下的性能还是很糟糕,而且我们不能控制操作的顺序,有时根本就不是随机的,我们希望找到有更好性能保证的算法. 2-3 search trees 于是先来了解下 2 ...

  10. 2017 SDN第一次作业

    (1)我会选择的,因为网络现在越来越重要,各行各业都离不开网络,这个方向可以适合各种岗位,感觉比较容易就业.但选这个课是为了多学一点东西,没想太多,嘎嘎嘎. (2)SDNLAB,是一个SDN的大的中文 ...