Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
148938 | 曾煦翔 | 书架问题2 | C++ | 解答错误 | 0 | 0 MS | 264 KB | 713 | 2024-05-25 15:17:24 |
#include <bits/stdc++.h> using namespace std; #define MAX 0x3f3f3f3f const int N = 10005; int x[N], y[N], f[N], sum[N]; int n, t, k; int Opt(int L, int R) { int W = 0, h = 0; for (int i = L; i <= R; i++) h = max(y[i], h); return sum[R] - sum[L - 1] > k ? MAX : h; } int main() { cin >> n >> k; for (int i = 1; i <= n; i++){ cin >> x[i] >> y[i]; sum[i] = sum[i - 1] + x[i]; } for (int i = 1; i <= n; i++){ f[i] = MAX; for (int j = i - 1; j >= 0; j--){ if (Opt(j + 1, i) > k) break; f[i] = min(f[i], f[j] + Opt(j + 1, i)); } } cout << f[n]; return 0; }