把一个有n的非负元素的数组划分为k部分(各个部分的元素在原数组中必须是连续的,就是{i, i+1,...,j}),使得k个部分各个部分元素的和中的最大值最小,返回这个值。
比如把{10, 20, 30, 40, 50, 60, 70, 80, 90}划分为3部分,那么这种划分是一种方案:
第一部分:10 20 30 40 50
第二部分:60 70
第三部分:80 90
http://boj.me/onlinejudge/showproblem.php?problem_id=1461
DP方法:O(n*n*n)
还有一种是 二分方法,复杂度是 nlog(sum),sum为n个元素的总和
cout<<fun(maxv,sum)<<endl;
}
return 0;
}