第四个点WA的原因
查看原帖
第四个点WA的原因
751546
wenyutao1楼主2023/11/15 22:52
bool check(int x){
	int s=0,block=1;
	for(int i=1;i<=n;++i){
		if(a[i]>x) return 0;   //这一行不加就会WA第四的点
		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!

2023/11/15 22:52
加载中...