HDOJ1176数塔

来源:互联网 发布:编程有几种语言 编辑:程序博客网 时间:2024/05/16 06:57
#include"iostream"#include"algorithm"#include"vector"#include"map"#include"string"#include"deque"#include"queue"#include"stack"#include"cstdio"#include"ctype.h"#include"cmath"#include"set"#include"sstream"using namespace std;const int num=100000+5;int main(){//freopen("a.txt","r",stdin);int n;int dp[num][15]; //时间<=10000 ,0=<位置<=10while(scanf("%d",&n)==1&&n){ memset(dp,0,sizeof(dp)); int t,p; int i,j;         int maxt =-1; for(i=0;i<n;i++) { scanf("%d%d",&p,&t); ++dp[t][p];             maxt=max(t,maxt); } for(i=maxt-1;i>=0;i--) for(j=0;j<=10;j++)     {     if(j==0)  dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j];   //0 10两个位置单独考虑 else if(j==10)  dp[i][j]=max(dp[i+1][j],dp[i+1][j-1])+dp[i][j]; else dp[i][j]=max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1]))+dp[i][j];     } cout<<dp[0][5]<<endl;  //5是源点 相当于塔顶}return 0;}

0 0
原创粉丝点击