1 条题解
-
0
C++ :
#include <cstdio> typedef long long ll; static ll a[1000005]; int main(){ int n, m; if(scanf("%d %d", &n, &m) != 2) return 0; ll lo = 0, hi = 0; for(int i=0;i<n;i++){ scanf("%lld", &a[i]); if(a[i] > lo) lo = a[i]; hi += a[i]; } ll ans = hi; while(lo <= hi){ ll mid = lo + (hi - lo) / 2; int cnt = 1; ll cur = 0; for(int i=0;i<n;i++){ if(cur + a[i] > mid){ cnt++; cur = a[i]; } else cur += a[i]; } if(cnt <= m){ ans = mid; hi = mid - 1; } else lo = mid + 1; } printf("%lld\n", ans); return 0; }
- 1
信息
- ID
- 2793
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者