hdu 1176

    技术2024-12-08  16

    /* 数塔的变形,看了别人的报告才看出来   dp[i][j] 为i-max秒内的第j位置可以得到的   最大饼数,最后dp[0][5] 就是从0秒开始到最大时间   截止,5号位置可以得到的最大饼数*/#include<iostream>using namespace std;#define M 101int dp[M][11];int Max( int a , int b , int c ){ int m; m = a > b ? a : b; m = c > m ? c : m; return m;}int n;int main(){ int _max , i , j , x , tim; while( scanf( "%d" , &n ) != EOF , n ) {  _max = 0;  memset( dp , 0 , sizeof( dp ) );  for( i = 0 ; i < n ; ++i )  {   scanf( "%d %d" , &x , &tim );   ++dp[tim][x];   if( tim > _max )   { _max = tim; }  }  for( i = _max - 1 ; i >= 0 ; --i )  {   dp[i][0] += Max( 0 , dp[i + 1][0] , dp[i + 1][1] );   for( j = 1 ; j < 10 ; ++j )   {    dp[i][j] += Max( dp[i + 1][j - 1] , dp[i + 1][j] , dp[i + 1][j + 1] );   }   dp[i][10] += Max( dp[i + 1][9] , dp[i + 1][10] , 0 );  }  printf( "%d/n" , dp[0][5] ); } return 0;}

    最新回复(0)