题解:

水题

化简一波式子会发现就是个二次函数再加上一个常数

而只有常数中的-2sigma(xiyi)是随移动而变化的

所以只要o(1)求出二次函数最大值然后搞出sigma(xiyi)就可以了

这个东西显然只要将一个倒序相乘就可以了

被这个m要乘2坑了一波。。。调了半天才过样例

代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define N 200000
  4. #define dob complex<double>
  5. const double pi=acos(-1.0);
  6. int r[N],sum[N],n,m,k,l;
  7. dob a[N],b[N];
  8. void fft(dob *a,int o)
  9. {
  10. for (int i=;i<n;i++)
  11. if (i>r[i]) swap(a[i],a[r[i]]);
  12. for (int i=;i<n;i*=)
  13. {
  14. dob wn(cos(pi/i),sin(pi*o/i)),x,y;
  15. for (int j=;j<n;j+=(i*))
  16. {
  17. dob w(,);
  18. for (int k=;k<i;k++,w*=wn)
  19. {
  20. x=a[j+k]; y=w*a[i+j+k];
  21. a[j+k]=x+y,a[i+j+k]=x-y;
  22. }
  23. }
  24. }
  25. }
  26. void query()
  27. {
  28. for (n = ; n <= m; n <<= ) l++;
  29. for (int i=;i<n;i++) r[i]=(r[i/]/)|((i&)<<(l-));
  30. fft(a,),fft(b,);
  31. for (int i=;i<n;i++) a[i]*=b[i];
  32. fft(a,-);
  33. for (int i=;i<=m*+;i++) sum[i]=(a[i].real()/n+0.5);
  34. }
  35. int main()
  36. {
  37. freopen("noip.in","r",stdin);
  38. freopen("noip.out","w",stdout);
  39. std::ios::sync_with_stdio(false);
  40. cin>>m>>k; int x,now=,ans=;
  41. for (int i=;i<m;i++)
  42. {
  43. cin>>x; now+=x; ans+=x*x; a[i]=x;
  44. }
  45. for (int i=m-;i>=;i--)
  46. {
  47. cin>>x; now-=x; ans+=x*x; b[i]=x;
  48. }
  49. int y=-now/m;
  50. int minn=1e9;
  51. for (int i=y-;i<=y+;i++)
  52. minn=min(m*i*i+*i*now,minn);
  53. ans+=minn;
  54. int tmp=m; m*=;
  55. query();
  56. m=tmp;
  57. int maxn=sum[m-];
  58. for (int i=m;i<*m;i++) maxn=max(sum[i]+sum[i-m],maxn);
  59. ans-=*maxn;
  60. cout<<ans<<endl;
  61. return ;
  62. }

[AH2017/HNOI2017]礼物的更多相关文章

  1. P3723 [AH2017/HNOI2017]礼物

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

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

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

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

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

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

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

  5. [AH2017/HNOI2017]礼物(FFT)

    题目描述 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手 环,一个留给自己,一 个送给她.每个手环上各有 n 个装饰物,并且每个装饰物都有一定的亮度.但是在她生日的前一 ...

  6. 【文文殿下】[AH2017/HNOI2017]礼物

    题解 二项式展开,然后暴力FFT就好了.会发现有一个卷积与c无关,我们找一个最小的项就行了. Tips:记得要倍长其中一个数组,防止FFT出锅 代码如下: #include<bits/stdc+ ...

  7. BZOJ4827:[AH2017/HNOI2017]礼物——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4827 https://www.luogu.org/problemnew/show/P3723 题面 ...

  8. 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 + ...

  9. 【[AH2017/HNOI2017]礼物】

    题目 又是我不会做的题了 看看柿子吧 \[\sum(a_i+c-b_i)^2\] 最小化这个柿子 之所以不写下标是因为我们这个\(\{a\},\{b\}\)可以循环同构 那就开始化吧 \[\sum(a ...

随机推荐

  1. Java编程思想 学习笔记5

    五.初始化与清理 1.用构造器确保初始化  在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化.创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造 ...

  2. mysql Mac终端操作

    1.启动mysql :brew services start mysql 2.登陆mysql :  mysql -u root -p mysql 命令.      -u 后面接用户名 root超级管理 ...

  3. FastReport动态绑定只显示一条数据。

    产生这个问题的原因是因为需要把Band绑定DataSource.有两种方法 (1)DataBand data = report1.Report.FindObject("Data1" ...

  4. IPv4套接字地址结构

    一.IPv4套接字地址结构(POSIX定义) (1)长度字段sin_len是为增加对OSI协议的支持而随4.3BSD-Reno添加的:并不是所有的厂家都支持套接字地址结构的长度字段,而且POSIX规范 ...

  5. Objects源码解析

    Objects类解析 ​ JDK7新增Objects类介绍(以下程序以1.8来说明) 简介: ​ JDK7里面新增的Objects类,本人学习HashMap源码偶遇此类,所以研究一下,本类将对象常用的 ...

  6. Linux 重启网卡失败 Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.

    linux下重启网卡使用命令 : service network restart 时报错: [root@slave01 hadoop]# service network restart Startin ...

  7. 实现一个string类

    实现要实现:构造,析构,拷贝构造,赋值的功能 1. 提供构造函数 string(), string(const string & str),string(const  char * str), ...

  8. 关于Linux 虚拟机如何才能ping 通外网

    需要虚拟机能够联网.以前都是用桥接模式让虚拟机跟主机通信,这几天查了好多资料,都没有写得很详细,自己捣鼓了很久,把步骤写下来吧. 虚拟机操作步骤: 点击虚拟机的“菜单栏”上的“编辑”,再点击“虚拟网络 ...

  9. Navicat Premium连接各种数据库

    版本信息 Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL.MariaDB.SQL Server.Oracle.PostgreSQL 和 SQLite 数 ...

  10. Node、PHP、Java 和 Go 服务端 I/O 性能PK

    http://blog.csdn.net/listen2you/article/details/72935679