题目大意
nnn箱薯条,选择nk\frac{n}{k}kn 辆卡车来运输,每辆卡车运输连续的kkk箱薯条,求在所有可行的情况下,卡车最大载重和最小载重的差值。
题目思路
根据题意,每辆卡车必须装满kkk箱,且卡车数是nk\frac{n}{k}kn ,所以卡车数辆必须是nnn的约数。所以枚举每一个iii,代表车辆装载连续的iii箱,然后求出当下情况载重的最大差值。
考虑到要多次计算连续的一段的和,所以可以使用前缀和进行优化,降低计算区间和的时间复杂度。
时间复杂度分析
该算法的时间复杂度主要集中在枚举每个nnn的约数,然后统计序列中每段连续的nnn个数,然后求极差。解决问题函数时间复杂度在有前缀和优化后几乎等于 O(n)O(n)O(n) 。
代码演示