1 条题解
-
1
我是题解
#include<bits/stdc++.h> using namespace std; #define int long long const long long jk=10000000; int a[jk],n,m,l,r; bool sanb(int k){ int f=1,t=1; int p[114514]; memset(p,0,sizeof(p)); int num=0; for(int i=1;i<=n;i++){ if(num+a[i]>k){ f++; num=a[i]; p[t]=num ; t++; if(f>m)return 0; } else num+=a[i]; } p[t]=num; t++; sort(p+1,p+1+t); return p[t]<=k; } signed main(){ cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; r+=a[i]; } l=1; r*=2; while(r-l>1){ int mid=(r+l)/2; if(sanb(mid))r=mid; else l=mid; } cout<<r; }
- 1
信息
- ID
- 26
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 6
- 已通过
- 3
- 上传者