0分求助
查看原帖
0分求助
654015
liangwenxuan楼主2022/7/28 15:39
#include <bits/stdc++.h>
using namespace std;
int n , m , a[100002] , r , l=0;
bool b ( int d ) {
	int ans = 1 , cur = 0;
	for ( int i = 1; i <= n; i ++ ) {
		if ( cur + a[i] > d ) {
			cur = 0;
			ans ++;
			continue;
		} 
		cur += a[i];
	}
	return ans <= m;
}
int main() {
	cin >> n >> m;
	for ( int i = 1; i <= n; i ++ ) {
		cin >> a[i];
		r += a[i];
		l = max( l , a[i] );
	}
	int mid , ans=0;
	while ( l <r ) {
		if ( b( mid = ( l + r ) >> 1 ) == 1 ) {
			ans = mid;
			r = mid ;
		}
		else {
			l = mid + 1;
		}
	}
	cout << ans;
	return 0;
}

为什么不对

2022/7/28 15:39
加载中...