[Hnoi2017]礼物

传送门:https://www.luogu.com.cn/problem/P3723数组

解题思路函数

先化简式子,$ Ans=\sum_{i=1}^n (a_i+b_{i+x}+k)^2=\sum a_{i}^2 + \sum b_{i}^2 + nk^2+\sum (a_{i}-b_{i}) * k - \sum a_{i}b_{i+x} $spa

前面的两个平方的和O(n)直接算,中间的直接二次函数找极值便可(不过若极点的横坐标是负数的话注意四舍五入的方法,负数的取整是会向上取的,例如printf("%d",-7.8)就会输出-7),最后的看上去是一个卷积的形式,考虑FFT,$a_{i}和b_{i+x}的下标相差x$,容易想到翻转a数组,而后直接FFT便可get

不要忘记倍长下b数组it

相关文章
相关标签/搜索