标签:des style blog http color java os io
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 25409 Accepted Submission(s):
8644
DP ,类似于数塔的变形,只不过是每个数下面要取的是三个数的最大值,另外注意边界。
第0秒 5 (这里的数字指的是第N秒可能到达的位置坐标)
第1秒 4 5 6
第2秒 3 4 5 6 7
第3秒 2 3 4 5 6 7 8
第4秒 1 2 3 4 5 6 7 8 9
第5秒 0 1 2 3 4 5 6 7 8 9 10
第6秒 0 1 2 3 4 5 6 7 8 9 10
状态转移方程:
left=dp[i+1][j-1]+a[i][j];
mid=dp[i+1][j]+a[i][j];
right=dp[i+1][j+1]+a[i][j];
dp[i][j]=max1(left,mid,right);
1 #include<stdio.h> 2 #include<iostream> 3 #include<string.h> 4 using namespace std; 5 int dp[100001][20],a[100001][20]; 6 int max1(int a,int b,int c) 7 { 8 int tmp; 9 tmp=max(a,b); 10 tmp=max(tmp,c); 11 return tmp; 12 } 13 int main() 14 { 15 int i,j,n,x,t,time,left,mid,right; 16 while(scanf("%d",&n)!=EOF&&n) 17 { 18 time=0; 19 memset(dp,0,sizeof(dp)); 20 memset(a,0,sizeof(a)); 21 for(i=1; i<=n; i++) 22 { 23 scanf("%d%d",&x,&t); 24 if(t>time) 25 time=t; 26 a[t][x+1]++; 27 dp[t][x+1]=a[t][x+1]; 28 } 29 for(i=time-1; i>=0; i--) 30 { 31 for(j=1; j<=11; j++) 32 { 33 left=dp[i+1][j-1]+a[i][j]; 34 mid=dp[i+1][j]+a[i][j]; 35 right=dp[i+1][j+1]+a[i][j]; 36 dp[i][j]=max1(left,mid,right); 37 } 38 } 39 printf("%d\n",dp[0][6]); 40 } 41 return 0; 42 }
标签:des style blog http color java os io
原文地址:http://www.cnblogs.com/lxm940130740/p/3904805.html