hdu 1176
简单DP 类似于在一个矩形中求最长路径
/************************************************************************* > Author: xlc2845 > Mail: xlc2845@gmail.com > Created Time: 2013年10月24日 星期四 14时38分17秒 ************************************************************************/ #include <iostream> #include <cstdio> #include <cstdlib> #include <cmath> #include <vector> #include <cstring> #include <algorithm> #define maxn 210 using namespace std; int dp[100010][15],n; int main() { while(scanf("%d", &n) && n) { memset(dp, 0, sizeof(dp)); int maxt = 0; while(n--) { int x,t; scanf("%d%d",&x,&t); dp[t][x+1]++; maxt = max(t, maxt); } for(int i = maxt-1; i >= 0; i--) { for(int j = 1; j <= 11; j++) dp[i][j] += max(dp[i+1][j], max(dp[i+1][j+1], dp[i+1][j-1])); } printf("%d\n",dp[0][6]); } return 0; }