1 条题解
-
0
int a[100001],n,m,sum,max1; bool check(int x) { int tot=0,pos=0; for(int i=1;i<=n;i++) { if(tot+a[i]<=x) { tot+=a[i]; continue; } tot=a[i]; pos++; } if(tot>0) pos++; if(pos<=m) return true; else return false; } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; max1=max(max1,a[i]); } int l=max1,r=sum; while(l<r) { int mid=(l+r)>>1; if(check(mid)) r=mid-1; else l=mid+1; } cout<<l; return 0; }
看不懂来问我(qwq懒得写注释了)
不要试图复制,我把头文件去了
- 1
信息
- ID
- 1318
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 58
- 已通过
- 9
- 上传者