社区讨论

wa#4求条

P1182数列分段 Section II参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhj0g6th
此快照首次捕获于
2025/11/03 18:42
4 个月前
此快照最后确认于
2025/11/03 18:42
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int N = 1e5 + 10;
int a[N];
int n,k;
bool pd(int m){
    int cnt = 0;
    int p = 0;
    for(int i = 1;i <= n;i ++){
        if(a[i] + p <= m)p += a[i];
        else p = a[i],cnt ++;
    }
    return cnt >= k;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin >> n >> k;
    int sum = 0;
    int ma = -1;
    for(int i = 1;i <= n;i ++){
        cin >> a[i];
        sum += a[i];
        ma = max(ma,a[i]);
    }
    int l = ma,r = sum;
    while(l + 1 < r){
        int m = l + r >> 1;
        if(pd(m))l = m;
        else r = m;
    }
    cout << r << endl;
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...