HDU 1069 Monkey and Banana(基础dp)
2017-03-16 13:21
357 查看
【题意】给你一些箱子,让你想办法把箱子摞的最高。箱子可以使用多次,也可以让任何一边做高,但是必须保证下面箱子的长和宽严格小于下面箱子的长宽。
【分析】因为箱子最多只有30个,每个箱子有6种摆法,所以最多有180个元素。可以dp[i]表示,第i个箱子最高可以摆多高。
dp[i] = max(dp[i], dp[j] + a[j].h);
记得排一下序,不然就有后效性了
【代码】
【分析】因为箱子最多只有30个,每个箱子有6种摆法,所以最多有180个元素。可以dp[i]表示,第i个箱子最高可以摆多高。
dp[i] = max(dp[i], dp[j] + a[j].h);
记得排一下序,不然就有后效性了
【代码】
#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> using namespace std; struct block{ int x, y, z; } a[10000]; int f[10000]; int cmp(block a, block b){ return a.x < b.x || a.x == b.x && a.y < b.y; } int main(){ int kase = 0; int n, maxi; while(scanf("%d", &n), n){ memset(f, 0, sizeof(f)); int ans = 0; int k = 0; for(int i = 1; i <= n; i++){ int x, y, z; scanf("%d%d%d", &x, &y, &z); a[++k].x = x; a[k].y = y; a[k].z = z; a[++k].x = x; a[k].y = z; a[k].z = y; a[++k].x = y; a[k].y = x; a[k].z = z; a[++k].x = y; a[k].y = z; a[k].z = x; a[++k].x = z; a[k].y = x; a[k].z = y; a[++k].x = z; a[k].y = y; a[k].z = x; } sort(a + 1, a + 1 + k, cmp); for(int i = 1; i <= k; i++) f[i] = a[i].z; for(int i = k; i >= 1; i--){ //cout << f[i] << endl; for(int j = 1; j < i; j++){ if(a[j].x < a[i].x && a[j].y < a[i].y){ f[j] = max(f[j], f[i] + a[j].z); } } ans = max(ans, f[i]); } printf("Case %d: maximum height = %d\n", ++kase, ans); } return 0; }
相关文章推荐
- C - Monkey and Banana HDU - 1069——基础dp
- HDU 1069 Monkey and Banana 基础DP
- HDU 1069 Monkey and Banana 基础DP
- dp基础4 - C - Monkey and Banana HDU - 1069
- hdu 1069 Monkey and Banana(基础dp)
- hdu 1069 Monkey and Banana(类似最长上升子序列,dp)
- HDU 1069 Monkey and Banana(DP)
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
- hdu 1069 Monkey and Banana(简单dp)
- hdu 1069 Monkey and Banana (DP)
- hdu 1069 Monkey and Banana (DP)
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
- hdu 1069 Monkey and Banana(dp)
- HDU 1069 Monkey and Banana【DP】
- HDU 1069 Monkey and Banana(dp)
- hdu 1069 Monkey and Banana dp
- HDU 1069 Monkey and Banana DP LIS
- hdu 1069 Monkey and Banana---dp(也可用 求最长路+floyd水过)
- zoj 1093 || hdu 1069 Monkey and Banana( Easy DP )
- hdu 1069 Monkey and Banana (结构体排序,也属于简单的dp)