hdu 1176 动态规划

来源:互联网 发布:心智图软件 编辑:程序博客网 时间:2024/05/22 02:16
 
//很水的动态规划题,但一开始一直想从t推到t+1,一直觉得有问题,然后网上搜了下,看到t+1到t立马通了,让后关了网页自己A

//状态转移方程是:dp[t][i] = max{ dp[t+1][i-1], dp[t+1][i], dp[t+1][i+1] } + m[t][i]

//ac代码如下:

 

#include <iostream>#include <cstring>#include <cstdio>using namespace std;int dp[100010][14];int m[100010][14];inline int max( int a, int b, int c ){int max;max = a > b ? a : b;max = max > c ? max : c;return max;}int main(){int n, maxtime, i, j;while( scanf( "%d", &n ) && n != 0 ){memset( dp, 0, sizeof( dp ) );memset( m, 0, sizeof( m ) );maxtime = 0;while( n-- ){scanf( "%d%d", &i, &j );m[j][i+1]++;maxtime = maxtime > j ? maxtime : j;}for( i = maxtime; i >= 1; i-- ){for( j = 1; j <= 11; j++ ){dp[i][j] = max( dp[i+1][j], dp[i+1][j+1], dp[i+1][j-1] ) + m[i][j];}}cout << max( dp[1][5], dp[1][6], dp[1][7] ) << endl;}return 0;}