码迷,mamicode.com
首页 > 其他好文 > 详细

hdu_1776

时间:2015-03-10 21:12:24      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

每秒可以移动1格

初始位置在5

dp[t][x] 代表 第t秒  在x位置  已经接到的馅饼数量

 

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 
 5 #define MAXN 100000
 6 
 7 int n, dp[MAXN+1000][11], cake[MAXN+1000][11];
 8 
 9 int main(int argc, char const *argv[])
10 {
11     // freopen("_in", "r", stdin);
12     while(scanf("%d", &n) && n!=0){
13 
14         memset(cake, 0, sizeof(cake));
15 
16         int max_t = 0;
17         for(int i = 1, _t, _x; i <= n; ++i){
18             scanf("%d%d", &_x, &_t);
19             ++ cake[_t][_x];
20             max_t = std::max(max_t, _t);
21         }
22         
23         memset(dp, -1000000, sizeof(dp));
24         dp[0][5] = 0;
25 
26         for(int t = 1; t <= max_t; ++t)
27             for(int x = 0; x <= 10; ++x)
28                 if(x == 0){
29                     dp[t][x] = std::max(dp[t-1][x], dp[t-1][x+1]) + cake[t][x];
30                 }
31                 else if(x == 10){
32                     dp[t][x] = std::max(dp[t-1][x-1], dp[t-1][x]) + cake[t][x];
33                 }
34                 else{
35                     dp[t][x] = std::max(dp[t-1][x-1], std::max(dp[t-1][x], dp[t-1][x+1])) + cake[t][x];
36                 }            
37         printf("%d\n", *std::max_element( dp[max_t], dp[max_t]+11 ) );
38 
39     }
40     return 0;
41 }

 

hdu_1776

标签:

原文地址:http://www.cnblogs.com/takeoffyoung/p/4326824.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!