免费馅饼,题目:http://acm.hdu.edu.cn/showproblem.php?pid=1176
其实就是数塔,一开始没注意,从0秒开始做,相当于从数塔的顶端往下走,结果wa到荼蘼,后来从打后ac了
1 #include<stdio.h> 2 #include<string.h> 3 int dp[15][110000]; 4 int max(int x,int y) 5 { 6 return x>y?x:y; 7 } 8 int main() 9 { 10 int n; 11 while (scanf("%d",&n),n) 12 { 13 int i,j; 14 memset(dp,0,sizeof(dp)); 15 int maxtime=0; 16 for (i=0;i<n;i++) 17 { 18 int t,p; 19 scanf("%d %d",&p,&t); 20 dp[p+1][t]++; 21 maxtime=max(maxtime,t); 22 } 23 for (i=maxtime-1;i>=0;i--) 24 { 25 for (j=1;j<=11;j++) 26 { 27 dp[j][i]=max(dp[j-1][i+1],max(dp[j][i+1],dp[j+1][i+1]))+dp[j][i]; 28 } 29 } 30 printf("%d\n",dp[6][0]); 31 } 32 return 0; 33 }