考虑用二分查找求解。
下界为最小的元素(单开一段最小大小),上界为所有元素之和(所有元素在一段)。
使用solve函数判断当前期望的最小段是否可以达到:
* 当前段元素之和+当前元素<=x:当前段可以容纳a[i]而不破坏期望最大值,累计当前段元素之和。
* 当前段元素之和+当前元素>x:当前段不能容纳a[i]而不破坏期望最大值,将当前段元素之和重置为a[i],并将段数++。
注意段落是cnt是从1开始累加的,因为最小的段数为1。
二分逻辑:由于返回true的情况可能包含正确答案,而返回true执行的操作为r=mid-1,因此最终答案为++r。