HUD 1176 免費餡餅
阿新 • • 發佈:2018-12-18
數塔 簡單dp
從最後一秒開始倒推,特判每一秒的0和10位置
#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int dp[100001][12]; int main() { int n,x,t,time=0; while(scanf("%d",&n)!=EOF&&n!=0) { memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) { scanf("%d%d",&x,&t); dp[t][x]++; if(time<t) time=t; } for(int j=time-1;j>=0;j--) { dp[j][0]+=max(dp[j+1][0],dp[j+1][1]); dp[j][10]+=max(dp[j+1][9],dp[j+1][10]); for(int i=1;i<=9;i++) { dp[j][i]+=max(dp[j+1][i-1],max(dp[j+1][i],dp[j+1][i+1])); } } printf("%d\n",dp[0][5]); } return 0; }