HDU 1176 免费馅饼 (DP)

题目链接:HDU 1176 免费馅饼

中文题。

dp[i][j]表示第i秒在j位置得到最大的馅饼数,右边1步,左边1步,,原地不动三个状态转移过来。

状态转移方程:dp[i][j]=max(dp[i+1][j],max(dp[i+1][j+1],dp[i+1][j-1]))+mp[i][j];

AC代码:

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int maxn=100000+10;int dp[maxn][15];//i秒钟在j位置得到的最大馅饼int mp[maxn][15];int main(){int maxi,mini;int n,i,j,x,t;while(scanf("%d",&n)!=EOF,n){mini=maxn;maxi=-1;memset(mp,0,sizeof mp);memset(dp,0,sizeof dp);for(i=0;i<n;i++){scanf("%d%d",&x,&t);mp[t][x]++;maxi=max(t,maxi);}int ans=-1;//时间,for(i=maxi;i>=0;i–){//位置for(j=0;j<=10;j++){if(j==0) dp[i][0]=max(dp[i+1][0],dp[i+1][1])+mp[i][0];else dp[i][j]=max(dp[i+1][j],max(dp[i+1][j+1],dp[i+1][j-1]))+mp[i][j];}}printf("%d\n",dp[0][5]);}return 0;}/*104 26 17 33 39 39 39 39 39 39 320 60 5*/

即使爬到最高的山上,一次也只能脚踏实地地迈一步。

HDU 1176 免费馅饼 (DP)

相关文章:

你感兴趣的文章:

标签云: