1 条题解
-
0
C++ :
#include<cstdio> #include<algorithm> using namespace std; const int MXN = 100000; int n, m; int a[MXN]; int check (int m) { int t, ans; t = 0; ans = 1; for (int i = 0; i < n; i++) { if (t + a[i] <= m) t += a[i]; else { t = a[i]; ans ++; } } return ans; } int main() { //freopen("divide_b4.in", "r", stdin); //freopen("divide_b4.out", "w", stdout); scanf ("%d%d", &n, &m); int l = 0; int r = 0; for (int i = 0; i < n; i++) { scanf ("%d", &a[i]); r += a[i]; l = max (l, a[i]); } while (l < r) { int mid = (l + r) / 2; if (check(mid) <= m) r = mid; else l = mid + 1; } printf ("%d\n", l); }
- 1
信息
- ID
- 1056
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 2
- 上传者