bool check(int x){
int s=0,block=1;
for(int i=1;i<=n;++i){
if(a[i]>x) return 0;
s+=a[i];
if(s>x) block++,s=a[i];
if(block>m) return 0;
}return 1;
}
如果不加这句话,就有可能存在一个大于x的数单独存在与一个区间,这显然是不合法的
例:
对于序列:
1 2 3 4 5
我们要将其分为4段,现在check(4):
若不加上面那一行代码,就会被分成:
[1,2],[3],[4],[5]
这个[5]显然不合法,故是错的
希望可以帮到大家 QWQ!