BZOJ1270: [BeijingWc2008]雷涛的小猫

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define pb push_back
#define MAXN 2000+2000
using namespace std;
int a[MAXN][MAXN];
int f[MAXN][MAXN];
int n,h,delta;
void init(){
    scanf("%d%d%d",&n,&h,&delta);
    for(int i=1;i<=n;i++){
        int t;scanf("%d",&t);
        while(t--){
            int v;scanf("%d",&v);
            a[i][v]++;
        }
    }
    for(int i=1;i<=n;i++){
        f[i][h]=a[i][h];
    }
}
void solve(){
    for(int j=h-1;j>=0;j--){
        int t=0;
        for(int i=1;i<=n;i++){
            t=max(t,f[i][j+delta]);
        }
        for(int i=1;i<=n;i++){
            f[i][j]=max(f[i][j+1],t)+a[i][j];
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        ans=max(ans,f[i][0]);
    }
    printf("%d\n",ans);
}
int main()
{
    init();
    solve();
    return 0;
}    

 

posted @ 2017-12-19 13:55  white_hat_hacker  阅读(151)  评论(0编辑  收藏  举报