HDU 1069 Monkey and Banana(最长递减子序列)
2017-12-12 19:36
316 查看
题目链接
题意:摞长方体,给定长方体的长宽高,个数无限制,可随意翻转,要求下面的长方体的长和宽都大于上面的,都不能相等,问最多能摞多高。
题解:个数无限,其实每种形态最多就用一次,把每种形态都单独算一种,同时保证长比宽大,按dp做即可。注意要从小到大摞,从大到小是不对的。
传送门:http://blog.csdn.net/qinmusiyan/article/details/7986263
题意:摞长方体,给定长方体的长宽高,个数无限制,可随意翻转,要求下面的长方体的长和宽都大于上面的,都不能相等,问最多能摞多高。
题解:个数无限,其实每种形态最多就用一次,把每种形态都单独算一种,同时保证长比宽大,按dp做即可。注意要从小到大摞,从大到小是不对的。
#include <bits/stdc++.h> using namespace std; struct sa { int l,w,h; }data[1005]; int dp[1005],n,d[5]; bool cmp(sa x,sa y) { if(x.l==y.l) return x.w<y.w; return x.l<y.l; } int main() { int t=1; while(scanf("%d",&n)&&n) { int cnt=0; for(int i=0;i<n;i++) { scanf("%d%d%d",&d[0],&d[1],&d[2]); sort(d,d+3); data[cnt].l=d[1],data[cnt].w=d[0],data[cnt].h=d[2],cnt++; data[cnt].l=d[2],data[cnt].w=d[0],data[cnt].h=d[1],cnt++; data[cnt].l=d[2],data[cnt].w=d[1],data[cnt].h=d[0],cnt++; } sort(data,data+cnt,cmp); for(int i=0;i<cnt;i++) dp[i]=data[i].h; for(int i=1;i<cnt;i++) for(int j=0;j<i;j++) { if(data[j].l<data[i].l&&data[j].w<data[i].w) { if(dp[i]<dp[j]+data[i].h)//双层for更直观 dp[i]=dp[j]+data[i].h; } } int ans=dp[0]; for(int i=1;i<cnt;i++) ans=max(ans,dp[i]); printf("Case %d: maximum height = %d\n",t++,ans); } return 0; }
传送门:http://blog.csdn.net/qinmusiyan/article/details/7986263
相关文章推荐
- HDU 1069 Monkey and Banana 最长上升子序列模板
- HDU 1069 Monkey and Banana (最长上升子序列)
- HDU 1069 Monkey and Banana(dp最长上升子序列)
- HDU 1069 Monkey and Banana (dp, 最长上升子序列)
- hdu 1069 Monkey and Banana(dp 最长上升子序列)
- hdu 1069 Monkey and Banana 最长上升子序列。
- hdu 1069 Monkey and Banana--最长递增子序列
- hdu 1069 Monkey and Banana(最长递减子序列 )
- HDU Monkey and Banana 1069 dp 动态规划 最长递增子序列
- hdu 1069 Monkey and Banana (最长上升子序列)
- hdu 1069 monkey and banana(最长下降子序列)
- HDU 1069 Monkey and Banana(LIS最长上升子序列)
- HDU 1069 Monkey and Banana(最大的单调递减序列啊 dp)
- hdu 1069 Monkey and Banana(类似最长上升子序列,dp)
- 三维最长上升子序列问题——HDU 1069 Monkey and Banana
- HDU - 1096 - Monkey and Banana(最长上升子序列)
- HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径)
- hdu 1069 Monkey and Banana 再来一波DP啦~~LIS的变形,会最大上升子序列就可以A啦~
- hud 1069 Monkey and Banana(最长不递减的子序列的应用)
- hdu 1069 Monkey and Banana(最长递增子序列的变形)