您的位置:首页 > 其它

HDOJ1176(免费馅饼)

2009-04-26 11:55 344 查看

免费馅饼

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 3281 Accepted Submission(s): 1046



[align=left]Problem Description[/align]
都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在移动不超过一米的范围内接住坠落的馅饼。现在给这条小径如图标上坐标:

//Accepted 1176 46MS 4900K 808 B C++ Xredman

#include <iostream>

using namespace std;

const int N = 100004;

//dp[i][j]表示在i秒是在j的最大数

int dp
[12];

int main()

{

int n, maxt, t, x;

int i, tmax;

while(scanf("%d", &n) && n)

{

memset(dp, 0, sizeof(dp));

maxt = 0;

for(i = 0; i < n; i++)

{

scanf("%d%d",&x, &t);

if(t > maxt)

maxt = t;

dp[t][x]++;

}

//>>>>>>>>>>>>>>>>>>>>>>>>>>>

t = maxt;

for(t --; t >= 0; t--)

{

for(i = 0; i <= 10; i++)

{

if(i == 0)

tmax = max(dp[t + 1][i], dp[t + 1][i + 1]);

else if(i == 10)

tmax = max(dp[t + 1][i], dp[t + 1][i - 1]);

else

{

tmax = max(dp[t + 1][i - 1], dp[t + 1][i]);

tmax = max(tmax, dp[t + 1][i + 1]);

}

dp[t][i] += tmax;

}

}

printf("%d\n", dp[0][5]);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: