Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
212014 suishou 书架问题1 C++ 解答错误 96 3 MS 376 KB 760 2026-06-11 14:10:00

Tests(31/32):


#include <iostream> #include <algorithm> using namespace std; int n, sw; int w[100005], h[100005], f[100005]; int main() { cin >> n >> sw; for (int i = 1; i <= n; i++) { // 修正:先读入宽度 w,再读入高度 h cin >> w[i] >> h[i]; } for (int i = 1; i <= n; i++) { int mx = h[i]; int sum_w = w[i]; f[i] = f[i - 1] + h[i]; // 初始化为第 i 本书单独放一层 for (int j = i - 2; j >= 0; j--) { sum_w += w[j + 1]; if (sum_w > sw) break; // 超过书架最大宽度,截断 mx = max(mx, h[j + 1]); f[i] = min(f[i], f[j] + mx); } } cout << f[n] << endl; return 0; }


测评信息: