1 条题解

  • 0
    @ 2025-6-2 20:32:31
    #include<bits/stdc++.h>
    using namespace std;
    int n, m;
    int a[100005];
    bool check(long long x) {
    	long long ans = 0, cnt = 1;
    	for (int i = 1; i <= n; i++) {
    		if (a[i] > x)return 0;
    		if (ans + a[i] <= x) 
    			ans += a[i];
    		else {
    			ans = a[i];
    			cnt++;
    		}
    	}
    	return cnt <= m;
    }
    int find() {
    	int l = 0, r = 1e9+1;
    	while (l + 1 < r) {
    		long long mid = l + r >> 1;
    		if (check(mid))r = mid;
    		else l = mid;
    	}
    	return r;
    }
    int main() {
    	cin>>n>>m;
    	for (int i = 1; i <= n; i++)
    		cin>>a[i];
    	cout << find();
    	return 0;
    }
    }
    

    傻子才会信这是AC代码

    • 1

    信息

    ID
    233
    时间
    1000ms
    内存
    128MiB
    难度
    10
    标签
    (无)
    递交数
    4
    已通过
    2
    上传者