bzoj1270 BeijingWc2008 雷涛的小猫 DP

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1270

 

比较水的一道dp

f1[i]为高度为i的时候的最大值 f2[i]为当前高度在第i棵树上的最大值

//bzoj1270 雷涛的小猫 dp 
#include<bits/stdc++.h>
using namespace std;
int f1[5005],f2[5005];
int mp[5005][5005];
int n,h,d;
int main(){
    scanf("%d%d%d",&n,&h,&d);
    int x,y;
    for(int i=1;i<=n;i++){
        scanf("%d",&x);
        for(int j=1;j<=x;j++){
            scanf("%d",&y);
            mp[i][y]++;
        }
    }
    for(int i=h;i>=1;i--){
        int t=(i+d)<=h?f1[i+d]:0;
        for(int j=1;j<=n;j++){
            f2[j]=max(f2[j],t)+mp[j][i];
            f1[i]=max(f1[i],f2[j]);
        }
    }
    printf("%d",f1[1]);
}
/*
3 10 2
3 1 4 10
6 3 5 9 7 8 9
5 4 5 3 6 9
*/

 

posted @ 2017-10-21 19:30  Elfish?  阅读(145)  评论(0编辑  收藏  举报