题干分析
有一个长度为 nnn 的数组,把这个数组切成连续的三段,它们的和分别记作 s1,s2,s3s_1,s_2,s_3s1 ,s2 ,s3 。然后计算最大值和最小值的差,求这个差的最小值。
思路
可以用枚举做本题,时间复杂度为 O(n2)O(n^2)O(n2),不会 TLETLETLE。
先提前算出数组的前缀和,记在 preprepre 数组里,方便以后的求和。然后枚举,第一层循环到 n−2n-2n−2,第二层循环到 n−1n-1n−1,这时,preprepre 数组就有用了。不难发现,s1←prei,s2←prej−prei,s3←pren−prejs_1 \gets pre_i,s_2 \gets pre_j - pre_i,s_3 \gets pre_n - pre_js1 ←prei ,s2 ←prej −prei ,s3 ←pren −prej 。然后算出最大值和最小值的差,再和当前最小的差比较即可。
代码
最后
如果有看不懂的,可以发在讨论区。制作不易,点个赞再走吧!