两份完全一样的代码,一个能过一个不能过?
查看原帖
两份完全一样的代码,一个能过一个不能过?
1451420
ALZ233楼主2024/10/24 11:24
#include <iostream>
#include <vector>

using namespace std;
int n, m;
vector<int> nums;

bool check (int maxSum){
	int segSum = 0, segCount = 1;
	for (int num : nums){
		if(segSum + num > maxSum){
			segSum = num;
			segCount ++;
			if(segCount > m) return false;
		}else{
			segSum += num;
		}
	}
	return true;
}

int main(){
	cin >> n >> m;
	nums.resize(n);
	int l = 0, r = 0;
	for(int i =0; i < n; i++){
		cin >> nums[i];
		l = max(1, nums[i]);
		r += nums[i];
	}
	while(l < r){
		int mid = l + (r-l)/2;
		if(check(mid)) r = mid;
		
		else l = mid + 1;
	}
	cout << l;
	return 0;
}

/*#include <iostream>
#include <vector>

using namespace std;

int n, m;
vector<int> nums;

bool check(int maxSum) {
    int segSum = 0, segCount = 1;
    for (int num : nums) {
        if (segSum + num > maxSum) {
            segSum = num;
            segCount++;
            if (segCount > m) return false;
        } else {
            segSum += num;
        }
    }
    return true;
}

int main() {
    cin >> n >> m;
    nums.resize(n);
    int l = 0, r = 0;
    for (int i = 0; i < n; i++) {
        cin >> nums[i];
        l = max(l, nums[i]);
        r += nums[i];
    }
    while (l < r) {
        int mid = l + (r - l) / 2;
        if (check(mid)) r = mid;
        else l = mid + 1;
    }
    cout << l;
    return 0;
}*/

注释里是能过的

2024/10/24 11:24
加载中...