BZOJ1270: [BeijingWc2008]雷涛的小猫 DP

来源:互联网 发布:vivo一键锁屏软件 编辑:程序博客网 时间:2024/05/02 00:48

题目大意:一只猫,可以在若干颗数之间瞎蹦,每次瞎蹦需要下降k的长度,到达一个点就获得该点的收益,问最大收益。
题解:SBDP,F1[i]表示高度为i的时候最大值是多少,F2[i]表示在第i棵树上时的最大权值为多少,随便写写就行了。

#include<bits/stdc++.h>using namespace std;int mapp[5000][5000];int f1[5000];int f2[5000];int main(){    int n,h,d;    scanf("%d%d%d",&n,&h,&d);    for(int i=1;i<=n;i++)    {        int x;        scanf("%d",&x);        for(int j=1;j<=x;j++)        {            int y;            scanf("%d",&y);            mapp[i][y]++;        }    }    for(int i=h;i>=1;i--)    {        int temp=i+d>h?0:f1[i+d];        for(int j=1;j<=n;j++)           {            f2[j]=max(f2[j],temp)+mapp[j][i];            f1[i]=max(f1[i],f2[j]);        }    }           cout<<f1[1];    return 0;}
原创粉丝点击