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