关于普及1的第八题我的check写挂了,求调


bool check(int mid){
	ll cnt=0,k=0;
	for(int i=0;i<n;i++){
		if(a[i]>mid){
			return false;
		}
		if((ll)k+a[i]>mid){
			cnt++;
			k=0;
		}
		k+=a[i];
	}
	return (cnt<=m);
}
1 个赞
long long c = 1, t = 0;
	for (int i = 1; i <= n; i++) {
		if (t + a[i] <= x) {
			t += a[i];
		} else {
			if (a[i] > x) {
				return 0;
			}
			if (c >= m) {
				return 0;
			}
			c++;
			t = a[i];
		}
	}
	return 1;

这是我的check,可以参考一下

1 个赞

如果对你有帮助,请给个解决方案

1 个赞