[luogu p2160] [SHOI2007]书柜的尺寸
P2160 [SHOI2007]书柜的尺寸 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
把书按高度从大到小排序,依次考虑放置,每一层第一个被放置的书的高度就是这一层的高度。
设
为什么会这么想,首先考虑
其次,如果考虑前
想到更换转移,于是有了上面的状态设计,发现这样就容易转移了。
刷表转移,对于
下一个状态是
发现时空复杂度仍然危险,考虑优化。
其实很容易发现
然后这个题第一维还需要一个滚动。
统计答案就是直接大力统计最后状态。
时间复杂度
这个题是 SHOI 2007,可以看到这题当时时限开了 5s,但是现在 1s 就可过,时代的进步~
/*
* @Author: crab-in-the-northeast
* @Date: 2022-09-23 21:02:08
* @Last Modified by: crab-in-the-northeast
* @Last Modified time: 2022-09-23 22:35:56
*/
#include <bits/stdc++.h>
inline int read() {
int x = 0;
bool flag = true;
char ch = getchar();
while (!isdigit(ch)) {
if (ch == '-')
flag = false;
ch = getchar();
}
while (isdigit(ch)) {
x = (x << 1) + (x << 3) + ch - '0';
ch = getchar();
}
if(flag)
return x;
return ~(x - 1);
}
const int maxn = 75;
const int maxm = maxn * 35;
int f[2][maxm][maxm];
struct node {
int h, t;
}a[maxn];
inline bool getmin(int &a, int b) {
return b < a ? a = b, true : false;
}
inline bool getmin(long long &a, long long b) {
return b < a ? a = b, true : false;
}
int main() {
int n = read();
for (int i = 1; i <= n; ++i) {
int h = read(), t = read();
a[i] = (node){h, t};
}
std :: sort(a + 1, a + 1 + n, [](node b, node c) {
return b.h > c.h;
});
std :: memset(f[0], 0x3f, sizeof(f[0]));
f[0][0][0] = 0;
int x = 0;
for (int u = 1; u <= n; x += a[u].t, ++u) {
int i = u & 1, t = a[u].t, h = a[u].h;
std :: memset(f[i], 0x3f, sizeof(f[i]));
for (int j = 0; j <= x; ++j) {
for (int k = 0; k <= x - j; ++k) {
int p = f[i ^ 1][j][k];
getmin(f[i][j + t][k], p + (j ? 0 : h));
getmin(f[i][j][k + t], p + (k ? 0 : h));
int l = x - j - k;
getmin(f[i][j][k], p + (l ? 0 : h));
}
}
}
long long ans = LONG_LONG_MAX;
for (int i = 1; i < x; ++i)
for (int j = 1; j < x - i; ++j)
getmin(ans, 1LL * std :: max({i, j, x - i - j}) * f[n & 1][i][j]);
printf("%lld\n", ans);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】