1 条题解
-
0
TJ
不准抄袭!
二分TJ
#include<bits/stdc++.h> using namespace std; int n,m; bool isnt(int mid,int*a){ int cnt=0; int x=a[1]; for(int i=2;i<=n;i++) { if(x+a[i]>mid) { cnt++; x=a[i]; } else { x+=a[i]; } } return cnt>m; } int main() { cin>>n>>m; int*p=new int[n]; int l=0,r=0; for(int i=1;i<=n;i++) { cin>>p[i]; l=max(l,p[i]); r+=p[i]; } while(l<=r) { int md=(l+r)/2; if(isnt(md,p)) l=md+1;//不合理 else r=md-1; } cout<<l; }
- 1
信息
- ID
- 660
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 22
- 已通过
- 7
- 上传者