「BZOJ1270」[BJWc2008] 雷涛的小猫
Description


Input

Output

Sample Input
3 10 2
3 1 4 10
6 3 5 9 7 8 9
5 4 5 3 6 9
Sample Output
8
HINT
代码
比较水的动规题。。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#include<cstdio> #include<iostream> using namespace std; int f1[5001],f2[5001];//高度为i最大值,当前高度在第i棵上最大值 int mp[5001][5001]; int main() { int n,h,d,x,t; scanf("%d%d%d",&n,&h,&d); for(int i=1;i<=n;i++) { scanf("%d",&x); for(int j=1;j<=x;j++) { scanf("%d",&t); mp[i][t]++; } } for(int i=h;i>0;i--) { 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]); return 0; } |
Kry说的就是我