P1107,mxqz,O(hn^2)dp写挂了
查看原帖
P1107,mxqz,O(hn^2)dp写挂了
485688
想吃小熊饼干楼主2021/8/8 12:52

rt,代码:

#include<bits/stdc++.h>
using namespace std;
int ans[2010][2010],t[2010][2010],n,h,d;
int main()
{
    memset(ans,0,sizeof(ans));
    memset(t,0,sizeof(t));
    scanf("%d%d%d",&n,&h,&d);
    for(int i=1;i<=n;i++)
    {
        int ai;scanf("%d",&ai);
        for(int j=1;j<=ai;j++)
        {
            int m;scanf("%d",&m);
            t[m][i]++;
        }
    }
    for(int i=h;i>0;i--)
    {
        for(int j=1;j<=n;j++)
        {
            int maxl=-1,maxr=-1;
            for(int k=1;k<j;k++)
                maxl=max(ans[i+d][k],maxl);
            for(int k=j+1;k<=n;k++)
                maxr=max(ans[i+d][k],maxr);
            ans[i][j]+=max(ans[i+1][j],max(maxl,maxr))+t[i][j];
            //cout<<ans[i][j]<<"    ";
        }
        //cout<<endl;
    }
    int maxans=-1;
    for(int i=1;i<=n;i++)maxans=max(ans[1][i],maxans);
    cout<<maxans;
    return 0;
}
2021/8/8 12:52
加载中...