rt,朋友出了一道题但是给不出做法,求助www。
给定一个长度为 N 的序列 S={s1,…,sN}。
选择一个 k∈[1,N],将 S 划分为 ⌊kN⌋ 个长度为 k 的子段和另一个长度为 N−k×⌊kN⌋ 的子段。设这些子段为 A1,…A⌊kN⌋+1。
注意:划分是依次的。即先尽可能地划分长度为 k 的子段,再把剩下的一段作为最后一个子段。
对于一个长度为 l 的序列 X={x1,…,xl},定义函数 f(X)=∑i=1l(l−i+1)xi 。
对于一个确定的 k,定义序列 S 的值为 i=1∑⌊kN⌋+1f(Ai)。
现在,你可以自由选择 k,并自由重排划分出的子段。求序列 S 的值的最小值。
注意:你只能重排划分出的每一个子段,不能重排序列 S。
数据范围:1≤N≤105,0≤∣si∣≤109。