poj 1088 滑雪
题目链接:http://poj.org/problem?id=1088
解题思路:贪心+简单dp
1 /////////////////////////////////////////////////////////////////////////// 2 //problem_id: poj 1088 3 //user_id: SCNU20102200088 4 /////////////////////////////////////////////////////////////////////////// 5 6 #include <algorithm> 7 #include <iostream> 8 #include <iterator> 9 #include <iomanip> 10 #include <cstring> 11 #include <cstdlib> 12 #include <string> 13 #include <vector> 14 #include <cstdio> 15 #include <cctype> 16 #include <cmath> 17 #include <queue> 18 #include <stack> 19 #include <list> 20 #include <set> 21 #include <map> 22 using namespace std; 23 24 /////////////////////////////////////////////////////////////////////////// 25 typedef long long LL; 26 const double PI=acos(-1.0); 27 28 const int x4[]={-1,0,1,0}; 29 const int y4[]={0,1,0,-1}; 30 const int x8[]={-1,-1,0,1,1,1,0,-1}; 31 const int y8[]={0,1,1,1,0,-1,-1,-1}; 32 33 typedef int T; 34 T max(T a,T b){ return a>b? a:b; } 35 T min(T a,T b){ return a<b? a:b; } 36 /////////////////////////////////////////////////////////////////////////// 37 38 /////////////////////////////////////////////////////////////////////////// 39 //Add Code: 40 struct Node{ 41 int i,j,h; 42 bool operator <(const Node &a) const{ 43 return h<a.h; 44 } 45 }t[10005]; 46 /////////////////////////////////////////////////////////////////////////// 47 48 int main(){ 49 /////////////////////////////////////////////////////////////////////// 50 //Add code: 51 int R,C,i,j,a[105][105],dp[105][105]; 52 scanf("%d%d",&R,&C); 53 for(i=0;i<=R+1;i++){ 54 for(j=0;j<=C+1;j++){ 55 a[i][j]=10005; 56 dp[i][j]=1; 57 } 58 } 59 int num=0; 60 for(i=1;i<=R;i++){ 61 for(j=1;j<=C;j++){ 62 scanf("%d",&a[i][j]); 63 t[num++]=Node{i,j,a[i][j]}; 64 } 65 } 66 sort(t,t+num); 67 int Max=0; 68 for(int k=0;k<num;k++){ 69 i=t[k].i,j=t[k].j; 70 for(int p=0;p<4;p++){ 71 int u=i+x4[p],v=j+y4[p]; 72 if(a[u][v]<a[i][j] && dp[u][v]+1>dp[i][j]) dp[i][j]=dp[u][v]+1; 73 } 74 Max=max(Max,dp[i][j]); 75 } 76 printf("%d\n",Max); 77 /////////////////////////////////////////////////////////////////////// 78 return 0; 79 } 80 81 /////////////////////////////////////////////////////////////////////////// 82 /* 83 Testcase: 84 Input: 85 5 5 86 1 2 3 4 5 87 16 17 18 19 6 88 15 24 25 20 7 89 14 23 22 21 8 90 13 12 11 10 9 91 Output: 92 25 93 */ 94 ///////////////////////////////////////////////////////////////////////////
posted on 2013-08-24 11:23 SCNU20102200088 阅读(134) 评论(0) 编辑 收藏 举报