HDU1176 免费馅饼(简单dp)
题意:一开始在5,每分钟可以接附近3个地方其中一个的东西,问最多接到多少个。
思路:倒着一遍就可以了
/* *********************************************** Author :devil Created Time :2015/12/22 20:50:26 ************************************************ */ #include <iostream> #include <algorithm> #include <cstring> #include <cmath> #include <queue> #include <map> #include <set> #include <vector> #include <cstdio> using namespace std; int dp[100005][12]; int main() { //freopen("in.txt","r",stdin); int n; while(~scanf("%d",&n)&&n) { int t,x,ma=0; memset(dp,0,sizeof(dp)); while(n--) { scanf("%d%d",&x,&t); dp[t][x]++; ma=max(ma,t); } for(int i=ma-1;i>=0;i--) { dp[i][0]+=max(dp[i+1][0],dp[i+1][1]); dp[i][11]+=max(dp[i+1][10],dp[i+1][11]); for(int j=1;j<11;j++) dp[i][j]+=max(max(dp[i+1][j-1],dp[i+1][j]),dp[i+1][j+1]); } printf("%d\n",dp[0][5]); } return 0; }