码迷,mamicode.com
首页 > 其他好文 > 详细

[BeijingWc2008][BZOJ1270] 雷涛的小猫|动态规划

时间:2015-08-15 13:22:54      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

1270: [BeijingWc2008]雷涛的小猫

Time Limit: 50 Sec  Memory Limit: 162 MB
Submit: 1002  Solved: 481
[Submit][Status][Discuss]

Description

技术分享 技术分享

Input

技术分享

Output

技术分享

Sample Input

技术分享

Sample Output

8

HINT

技术分享

Source

 

唉……第一遍写了个超暴力dp直接跑完了50s。

f1,f2分别表示 高度为i的最大值,当前高度在第i棵上最大值。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
int n,h,mx,delta,a[2005][2005],f1[5005],f2[5005];
inline int read()
{
    int a=0,f=1; char c=getchar();
    while (c<0||c>9) {if (c==-) f=-1; c=getchar();}
    while (c>=0&&c<=9) {a=a*10+c-0; c=getchar();}
    return a*f;
}
int main()
{
    n=read(); h=read(); delta=read();
    for (int i=1;i<=n;i++)
    {
        int x=read();
        while (x--)
        {
            int j=read();
            a[i][j]++;
        }
    }
    for (int i=h;i>0;i--)
    {
        int t=(i+delta<=h)?f1[i+delta]:0;
        for (int j=1;j<=n;j++)
        {
            f2[j]=max(f2[j],t)+a[j][i];
            f1[i]=max(f1[i],f2[j]);
        }
    }
    printf("%d",f1[1]);
    return 0;
}

 

[BeijingWc2008][BZOJ1270] 雷涛的小猫|动态规划

标签:

原文地址:http://www.cnblogs.com/ws-fqk/p/4732263.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!