博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
luoguP3723 HNOI2017 礼物
阅读量:5094 次
发布时间:2019-06-13

本文共 1358 字,大约阅读时间需要 4 分钟。

  • 首先,两个手环增加非负整数亮度,等于其中一个增加一个整数亮度,可以为负。
  • 令增加量为\(x\),旋转以后的原数列为,那么在不考虑转圈圈的情况下,现在的费用就是:
    \[\sum_{i=1}^n\left(a_i+x-b_i\right)^2\]
  • \[\sum_{i=1}^na_i^2+\sum_{i=1}^nb_i^2+nx^2+2x\left(\sum_{i=1}^na_i-\sum_{i=1}^nb_i\right)-2\sum_{i=1}^na_ib_i\]
  • 前面两个是确定的,后面是\(y=ax^2+bx+c\)的形式,那么\(x=\frac{b}{-2a}\)
  • 所以只需要使得\(\sum a_i*b_i\)最大即可。
  • 直接做不好做,翻转\(a\)
    \[\sum_{i=1}^na_{n-i+1}b_i\]
  • 这不是一个卷积吗~
  • \(b\)倍长后,其中卷起来后的每一项都对应了一种反转方案,直接\(fft\)后取最小值。
  • 然后把前面的不变项加上,就是答案了。

#include
#define R register int#define db double#define il inline #define ll long long using namespace std;const int N=1000000;const db pi=acos(-1.0);int n,m,x,nw,pik,a[N],b[N];ll ans;il int gi(){ R x=0,k=1;char c=getchar(); while(c!='-'&&(c<'0'||c>'9'))c=getchar(); if(c=='-')k=-1,c=getchar(); while(c<='9'&&c>='0')x=(x<<3)+(x<<1)+c-'0',c=getchar(); return x*k;}il int sqr(R x){return x*x;}namespace FFT{ int m,lim=1,er,Mx=-2e9,rd[N]; struct G{ db x,y; G (db xx=0,db yy=0){x=xx,y=yy;} }x[N],y[N]; G operator + (G a,G b){return G(a.x+b.x,a.y+b.y);} G operator - (G a,G b){return G(a.x-b.x,a.y-b.y);} G operator * (G a,G b){return G(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);} void fft(G *A,R op){ for(R i=0;i
>1]>>1)|((i&1)<<(er-1)); fft(x,1),fft(y,1); for(R i=0;i

转载于:https://www.cnblogs.com/Tyher/p/10038269.html

你可能感兴趣的文章
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
android中自定义下拉框(转)
查看>>
Android设计模式源码解析之外观模式(Facade)
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>
GDOI DAY1游记
查看>>
收集WebDriver的执行命令和参数信息
查看>>
数据结构与算法(三)-线性表之静态链表
查看>>
mac下的mysql报错:ERROR 1045(28000)和ERROR 2002 (HY000)的解决办法
查看>>
Hmailserver搭建邮件服务器
查看>>
django之多表查询-2
查看>>
BULK INSERT, 实战手记:让百万级数据瞬间导入SQL Server
查看>>
快速幂
查看>>
改善C#公共程序类库质量的10种方法
查看>>