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 */