BZOJ#270[BeijingWc2008]雷涛的小猫

2022/3/29 23:29:58

本文主要是介绍BZOJ#270[BeijingWc2008]雷涛的小猫,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

[BeijingWc2008]雷涛的小猫

image

思路:

每个点有两种转移方式,要么由h+d转移过来,要么由h+1转移过来

代码:

#include <bits/stdc++.h>
#define int long long
int _= 0, Case = 1;
using namespace std;
#define all(v) begin(v),end(v)
#define nline '\n'

const int N=5500;
int c[N][N];
int f[N][N];
int mmax[N];
void solve(int Case) {
    int n,h,d;
    cin>>n>>h>>d;
    for(int i=1;i<=n;i++){
        int cnt;
        cin>>cnt;
        for(int j=1;j<=cnt;j++){
            int p;
            cin>>p;
            c[i][p]++;
        }
    }
    for(int i=h;i>=0;i--){
        for(int j=1;j<=n;j++){
            f[i][j]=max(f[i+1][j],mmax[i+d])+c[j][i];
            mmax[i]=max(mmax[i],f[i][j]);
        }
    }
    cout<<mmax[0]<<nline;
}

signed main() {
    ios::sync_with_stdio(false); cin.tie(nullptr);
 //   cin >> _; for (Case = 1; Case <= _; Case++)
        solve(Case);

    return 0;
}


这篇关于BZOJ#270[BeijingWc2008]雷涛的小猫的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程