博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[AH2017/HNOI2017]礼物【FFT】
阅读量:6679 次
发布时间:2019-06-25

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

题目大意:有两个只能旋转不能翻转的环,环上每个点有一定的权值,可以把其中一个环的权值全增加\(c\),最小化改变(旋转和增加权值)后的\(\sum_{i=0}^{n-1}(x_i-y_i)^2\)
\(1 \le n\le 5*{10}^4, 1\le m\le 100, 1\le a_i\le m\)(m为初始权值的最大值)
\(f[k][i]\)为第一个环的\(0\)号点对齐第二个环的\(i\)号节点,使第一个环权值增加\(k\)\(\sum_{i=0}^{n-1}(x_i-y_i)^2\)的值
\(Sx=\sum_{i=0}^{n-1}x_i, Sy=\sum_{i=0}^{n-1}y_i, Sx2=\sum_{i=0}^{n-1}x_i^2, Sy2=\sum_{i=0}^{n-1}y_i^2\)
\[\begin{aligned} f[k][i]&=\sum_{j=0}^{n-1}(x_j-y_{j+i}+k)^2\\ &=\sum_{j=0}^{n-1}(x_j^2+2x_j(k-y_{j+i})+(k-y_{j+i})^2)\\ &=Sx2+Sy2+2k(Sx-Sy)+nk^2-2\sum_{j=0}^{n-1}x_jy_{j+i} \end{aligned} \]
\(b_i=x_{n-1-i}\),即\(x_i=b_{n-1-i}\)
\(f[k][i]=-2(b*y)(n-1+i)+Sx2+Sy2+2k(Sx-Sy)+nk^2\)
\(g(n)=(b*y)(n)\)预处理出\(g\)
把看\(k\)看做变量,这就是一个二次函数
显然,\(n > 0\),对称轴为\(-\frac{Sx-Sy}{n}, f[i]\)在对称轴处取最小值,
分别求\(f[i]\)\(k=-\lfloor\frac{Sx-Sy}{n}\rfloor\)\(k=-\lceil\frac{Sx-Sy}{n}\rceil\)的取值取最小
对称轴是固定的,只要求出\(-2g_{2n-2+i}\)的最小值就好
那么就结束啦(\(FFT\)的板我就不贴了)

void solve(){    n=read(), m=read();    for(int i=1, x; i <= n; i++) x=read(), sx+=x, sx2+=x*x, f[n-i].a=x;     for(int i=0, y; i < n; i++) y=read(), sy+=y, sy2+=y*y, g[i].a=y, g[n+i].a=y;    while(lim < n*3) lim<<=1, l++;    for(int i=0; i < lim; i++) r[i]=r[i>>1]>>1|((i&1)<

转载于:https://www.cnblogs.com/zerolt/p/9308975.html

你可能感兴趣的文章
Linux基础:CentOS安装python3.7
查看>>
Daily Scrum: 2012/11/27
查看>>
vue学习中v-if和v-show一起使用的问题
查看>>
获取一个月前的当前时间
查看>>
第三期 预测——1.简介
查看>>
behavior planning——12.example cost funtion -lane change penalty
查看>>
基于 Spring + Atomikos + Mybatis的多数据源配置demo
查看>>
随笔-刚毕业找工作的点滴(程序员)
查看>>
利用poi3.8中SXSSFWorkbook实现大数据量导出excel
查看>>
day34-1 面向对象概述
查看>>
GCD之dispatch queue
查看>>
【Oracle】-初识PL/SQL
查看>>
黄聪:超实用的PHPExcel[导入][导出]实现方法总结
查看>>
模板变量,过滤器和静态文件引入
查看>>
Oracle 中的 Schema
查看>>
Web APi之认证(Authentication)两种实现方式后续【三】(十五)
查看>>
一条语句简单解决“每个Y的最新X”的SQL经典问题
查看>>
(转)链接服务器——获取EXCEL数据
查看>>
《程序员的自我修养-链接、装载和库》
查看>>
Qt 平台中使GUI保持响应流畅
查看>>