HDU 1176 经典dp

记录最晚时间 从time为2枚举到最晚时间 每个时间段的x轴节点都等于上一个时间段的可触及的最大馅饼数

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<map>
#include<math.h>
using namespace std;
int dp[100050][11];
int a[100050][11];
void init()
{
    memset(a,0,sizeof(a));
    memset(dp,0,sizeof(dp));
}
int main(){
int n;
while(~scanf("%d",&n))
{
    if(n==0)
        break;
    init();
    int q,w;
    int t=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&q,&w);
        a[w][q]++;
        if(w>t)
            t=w;
    }
    dp[1][4]=a[1][4];
    dp[1][5]=a[1][5];
    dp[1][6]=a[1][6];
    for(int i=2;i<=t;i++)
    {
        dp[i][0]=max(dp[i-1][0]+a[i][0],dp[i-1][1]+a[i][0]);
        dp[i][10]=max(dp[i-1][10]+a[i][10],dp[i-1][9]+a[i][10]);
        for(int k=1;k<=9;k++)
        {
            dp[i][k]=max(max(dp[i-1][k-1],dp[i-1][k]),dp[i-1][k+1])+a[i][k];
        }
    }
    int ans=0;
    for(int i=0;i<=10;i++)
    {
        if(dp[t][i]>ans)
            ans=dp[t][i];
    }
    printf("%d\n",ans);
}
}

  

时间: 2024-08-10 19:19:00

HDU 1176 经典dp的相关文章

hdu 1227(经典dp)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1227 Fast Food Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2165    Accepted Submission(s): 926 Problem Description The fastfood chain McBurger

HDU 1176 逆向dp very easy~

HDU1176 免费馅饼 这好像是我写的第一道kuangbin专题里的题,当时能力不够,只简单理解了一下"塔数"的概念 今天看了别人的题解,才系统地理解了一下 以后有一个小要求,代码一定要标准,代码风格要好一点,最近看别人的题解,发现有的人代码写得不是很好理解,可能他们有自己的思路吧 不知道是不是HDU不接受输入加速优化,加了那三行优化就会WA,而且POJ是不可以用万能头的,跟CF有点不一样 昨晚的CF,用了ISO优化也WA了,改成scanf就好了,不知道是为什么,看来以后还是要用sc

hdu 1159 经典dp最长公共子序列

背景:上次比赛就没有做出来,回来根据实际意义半天也想不出如何dp,结果从猜转移方程入手,竟然想对了!开始想把空间优化到一维数组,没有想到要用同维度左边的值wa了. 思路: dp[i][j]=max{max[i-1][j],max[i][j-1],max[i-1][j-1]+(a[i] == b[j])} //dp[i][j]定以为,a串的前i个字符和b串的前b个字符的最大字串和,为选a串的第i个字符而不选b串的第j个字符,不选a串的第i个字符而选b串的第j个字符,既选a串的第i个字符又选b串的第

免费馅饼 (hdu 1176 简单DP)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28519    Accepted Submission(s): 9737 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1

hdu 1421 经典dp

很显然,将物品按照重量排序后,如果要搬某一对物品,则这两件物品一定是相邻的. 于是排序后依次考虑第i件物品放或者不放,即得到状态转移方程: f[i][j] = min( f( i - 1, j ), f( i - 2, j - 1 ) + d[i] ); 其中,d[i]表示第i件物品和第i-1件物品这一对产生的疲劳度. 1 #include <algorithm> 2 #include <cstring> 3 #include <cstdio> 4 using name

HDU 1176免费馅饼 DP数塔问题转化

L - 免费馅饼 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1176 Appoint description:  prayerhgq  (2015-07-28) System Crawler  (2015-11-21) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.

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; con

hdu 1176 免费馅饼 (dp 数塔类型)

免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 25712    Accepted Submission(s): 8760 Problem Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的1

[2016-03-29][HDU][1176][免费馅饼]

时间:2016-03-29 09:46:34 星期二 题目编号:[2016-03-29][HDU][1176][免费馅饼] #include <algorithm> #include <cstring> #include <cstdio> using namespace std; const int maxt = 100000 + 10; int dp[maxt][11]; int a[maxt][11]; int main(){ int n,x,t,maxT; whi