标签:style blog http color io os ar java for
6 5 1 4 1 6 1 7 2 7 2 8 3 0
4
解题:把时间空间化成二维的,dp[i][j]表示i时间j位置获取的最大的馅饼数。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cmath> 5 #include <algorithm> 6 #include <climits> 7 #include <vector> 8 #include <queue> 9 #include <cstdlib> 10 #include <string> 11 #include <set> 12 #include <stack> 13 #define LL long long 14 #define pii pair<int,int> 15 #define INF 0x3f3f3f3f 16 using namespace std; 17 int x,T,m[100100][12],dp[100100][12]; 18 int main() { 19 int n,mT; 20 while(scanf("%d",&n),n){ 21 memset(dp,0,sizeof(dp)); 22 memset(m,0,sizeof(m)); 23 mT = 0; 24 for(int i = 0; i < n; i++){ 25 scanf("%d %d",&x,&T); 26 ++m[T][x]; 27 mT = max(mT,T); 28 } 29 dp[1][4] = m[1][4]; 30 dp[1][5] = m[1][5]; 31 dp[1][6] = m[1][6]; 32 int ans = 0; 33 for(int i = 2; i <= mT; i++){ 34 for(int j = 0; j < 11; j++){ 35 dp[i][j] = dp[i-1][j]; 36 if(j > 0) dp[i][j] = max(dp[i][j],dp[i-1][j-1]); 37 if(j < 10) dp[i][j] = max(dp[i][j],dp[i-1][j+1]); 38 dp[i][j] += m[i][j]; 39 if(i == mT) ans = max(ans,dp[i][j]); 40 } 41 } 42 printf("%d\n",ans); 43 } 44 return 0; 45 }
标签:style blog http color io os ar java for
原文地址:http://www.cnblogs.com/crackpotisback/p/4003164.html