HDU1069(还是dp基础)
来源:互联网 发布:软件质量控制流程 编辑:程序博客网 时间:2024/05/18 03:16
今天不想说太多废话~因为等下要写自动提交机。不知道能不能成功呢?
题目的意思就是,一个猴子,在叠砖头 ...下面的要严格大于上面的,求叠起来最高能到多少~
n很少,n^2算法毫无压力~话说dp的n一般都小。
我们先排序,拍完序的状态转移方程是: dp[i]=max(dp[j])+z[i],0<=i<=j。记得要等于。
之后再线性遍历一下找出max ,不然还是WA~
还有在读入的时候,一个砖生成六个砖,可以自己暴力模拟一下,我是走循环的~
这个循环条件我也不知道怎么说,我只是觉得判断两两不相等好麻烦,我这个映射在小范围没出现过问题。
/***********************************************************> OS : Linux 3.2.0-60-generic #91-Ubuntu> Author : yaolong> Mail : dengyaolong@yeah.net > Time : 2014年06月03日 星期二 07:11:21 **********************************************************/#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define maxn 200int x[maxn];int y[maxn];int z[maxn];int dp[maxn];int I[maxn];int cmp(int i,int j){ if(x[i]!=x[j]){ return x[i]<x[j]; } return y[i]<y[j];}int main(){int n,i,j,tmp[3]; x[0]=y[0]=z[0]=0; int sb=1; while(cin>>n&&n){ int ind=1; for(i=0;i<n;i++){ for (j=0;j<3;j++){ cin>>tmp[j]; } for(int l=0;l<3;l++) for(int k=0;k<3;k++) for(int m=0;m<3;m++){ if(l*l+k*k+m*m==5){ x[ind]=tmp[l]; y[ind]=tmp[k];z[ind]=tmp[m];ind++; } } } for(i=0;i<ind;i++){ I[i]=i; } sort(I,I+ind,cmp); memset(dp,0,sizeof(dp)); for(i=0;i<ind;i++){ int mmax=0; for(j=0;j<=i;j++){ if(x[I[j]]<x[I[i]]&&y[I[j]]<y[I[i]]) mmax=max(dp[I[j]],mmax); } dp[I[i]]=z[I[i]]+mmax; } int ans=0; for(i=0;i<ind;i++){ ans=max(ans,dp[i]); } //for (i=1;i<ind;i++) printf("Case %d: maximum height = %d\n",sb++,ans); }return 0;}
0 0
- HDU1069(还是dp基础)
- hdu1069 Monkey and Banana 还是DP
- hdu1069(dp)
- hdu1069 简单dp
- hdu1069 dp动态规划
- HDU1069(Monkey and Banana)DP
- HDU1069 Monkey and Banana 【DP】
- hdu1069 Monkey and Banana--DP
- HDU1069-Monkey and Banana(dp)
- hdu1069 Monkey and Banana dp
- hdu1069
- hdu1069
- hdu1069
- hdu1069
- HDU1069
- hdu1069
- HDU1069
- hdu1069
- 怎样快速学习一门新技术
- ASP.NET MVC学前篇之Ninject的初步了解
- intellij idea背景色设置
- 新IOS编程语言 Swift 新编译器Xcode6
- 清晨
- HDU1069(还是dp基础)
- 剑指offer面试题21
- 怎样快速学习一门新技术
- 探讨C++中对象的“浅拷贝”与“深拷贝”
- 怎样快速学习一门新技术
- Z**002
- iOS获取OpenUUID
- 剑指offer面试题22
- 15-1-(1)-工资数据的输入(cin)