HDU1614 | UVA 103 Stacking Boxes
来源:互联网 发布:聚游网络首页 编辑:程序博客网 时间:2024/06/07 09:27
数塔类型的dp,记忆化搜索就可以了.
注意杭电的输出最后有一个空格.
#include <algorithm>#include <memory.h>#include <cstdio>#include <vector>using namespace std;const int MAX = 31;struct Box{int dims[11];}boxes[MAX];bool g[MAX][MAX];int dp[MAX], fa[MAX], n, k;//check if box a can be nested into box bbool can_be_nested(Box & a, Box & b, int len){for(int i = 0; i < len; ++i){if(a.dims[i] >= b.dims[i])return false;}return true;}int memoized_dfs(int i){if(dp[i] != 0)return dp[i];int max_len = 0;for(int j = 1; j <= k; ++j){if(g[i][j]){int next_len = memoized_dfs(j);if(next_len > max_len){max_len = next_len;fa[i] = j;}}}return dp[i] = max_len + 1;}int main(int argc, char const *argv[]){while(scanf("%d %d", &k, &n) == 2){memset(g, false, sizeof(g));for(int i = 1; i <= k; ++i){for(int j = 0; j < n; ++j){scanf("%d", &boxes[i].dims[j]);}sort(boxes[i].dims, boxes[i].dims + n);}for(int i = 1; i <= k; ++i){for(int j = 1; j <= k; ++j){if(can_be_nested(boxes[j], boxes[i], n)){g[i][j] = true;}}}vector<int> ans;for(int i = 1; i <= k; ++i){memset(dp, 0, sizeof(dp));memset(fa, 0, sizeof(fa));int length = memoized_dfs(i);if(length > ans.size()){ans.clear();int p = i;while(p != 0){ans.push_back(p);p = fa[p];}}}printf("%d\n", ans.size());for(int i = ans.size() - 1; i >= 0; --i){if(i < ans.size() - 1)printf(" ");printf("%d", ans[i]);}printf("\n");}return 0;}
0 0
- HDU1614 | UVA 103 Stacking Boxes
- UVa 103 Stacking Boxes
- UVA 103 - Stacking Boxes
- uva 103 - Stacking Boxes
- uva 103 Stacking Boxes
- [UVA 103] Stacking Boxes
- uva:103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- UVA - 103 Stacking Boxes
- uva 103 - Stacking Boxes
- UVA 103 Stacking Boxes
- UVa 103 - Stacking Boxes
- Uva - 103 - Stacking Boxes
- uva 103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- UVa 103 - Stacking Boxes
- Uva-103-Stacking Boxes
- UVa:103 Stacking Boxes
- 一周消息树:80%开发者背井离乡,70%经常加班
- Microsoft SQL Server,错误: 5120
- 习近平谈三严三实
- 颜色空间:RGB,CMY,HSV,HSL,Lab详解
- Java实现的插入排序
- HDU1614 | UVA 103 Stacking Boxes
- 读懂常见IRP:IRP_MJ_CLEANUP\IRP_MJ_CLOSE\IRP_MJ_CREATE
- SMART原则
- 什么是以太网网桥?
- Android4.2.2 SurfaceFlinger启动流程详解(一)
- C# 和 Win32API
- UVA - 10192 - Vacation (动态规划, LCS)
- oracle修改字符集
- 习近平谈三严三实