ことばがありあまれどなお、 このゆめはつづ|

trsins

园龄:3年10个月粉丝:18关注:2

【做题记录】AHOI/HNOI2017 礼物

  • AHOI/HNOI2017】礼物

    • 算法:FFT

题目:

给定数列 a,bb 可以循环移动,选择整数 c,求 i=1n(aibi+c)2最小值。

1n50000, 1aim100

题解:

把题目的式子拆一下,得

i=1n(aibi+c)2=i=1n(aibi)2+c2+2c(aibi)=i=1nai2+bi22aibi+c2+2aic2bic=i=1nai2+i=1nbi22i=1naibi+nc2+2ci=1n(aibi)

对于 $ \sum\limits_{i=1}na_i2+\sum\limits_{i=1}nb_i2$ 显然为定值,预处理即可。

而 $ nc2+2c\sum\limits_{i=1}n(a_i-b_i)$ 可以看成是一个关于 c 的二次函数,不妨设 y=(i=1naii=1nbi)

min(nc2+2ci=1n(aibi))c=yn 时取得。

又因为 c 为整数,所以 c=knkn,将两者带入取 min 即可。

所以此时式子只剩下中间的 i=1naibi,将它最大化。

a 给反转一下,所以得

i=1nanibi

然后对这个做卷积。

本文作者:trsins

本文链接:https://www.cnblogs.com/trsins/p/15776603.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   trsins  阅读(36)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示