zoukankan      html  css  js  c++  java
  • 免费馅饼 HDU

    /*题都是有一个状态转移方程式 ,
    只要推出方程式就问题不大了,首
    先对于gameboy来说他下一秒只能
    在0~10这十一个位置移动,
    而对于1~9这九个位置来说他可以移动(假设他现在的位置为x)到x+1,或者x-1,或者x;
    0和10这两个位置只有两个位置可以移动,
    可以用dp[t][x],t秒的馅饼获得就看t-1秒时的下一位置(x+1,x,x-1)
    因为要求整个过程的最大值,因此求的是dp累加的和,
    所以状态转移方程式为  dp[i][j]+=max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1]));
    */
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<math.h>
    #include<stdio.h>
    using namespace std;
    int dp[150000][20];
    int main()
    {
        int n;
        while(scanf("%d",&n),n)
        {
            int t,x,tt=0;
            memset(dp,0,sizeof(dp));
            for(int i=0; i<n; i++)
            {
                scanf("%d %d",&x,&t);
                //t是时间
                //x+1是位置加1
                dp[t][x+1]++;
                tt=max(tt,t);
            }
            int res=0;
            //只有最开始的位置是确定的,所以从后面的时间往前
            for(int i=tt-1; i>=0; i--)
                //往前面推,在此位置接到的馅饼数,是这一位置接到的加上上一秒接到的和
                for(int j=12; j>=0; j--)
                    dp[i][j]+=max(dp[i+1][j-1],max(dp[i+1][j],dp[i+1][j+1]));
            //初始位置在5号位置, 
            cout<<dp[0][6]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Mongodb在window上启动
    java:JQuery(Ajax,JSON)
    SqlServer:SqlServer(sql,游标,定时作业,行转列,列转行,公用表达式递归,merge合并)
    java:WebService
    java:svn
    java:Echarts,POI
    java:LeakFilling(Other)
    java:activiti(工作流简介 )
    Linux:lvm磁盘分区,动态扩容
    java:dubbo
  • 原文地址:https://www.cnblogs.com/QingyuYYYYY/p/12238298.html
Copyright © 2011-2022 走看看