30分求助
查看原帖
30分求助
580202
Siegerkranz_2735楼主2022/10/13 19:03
#include<bits/stdc++.h>
using namespace std;
int n,h,delta,f[2005][2005],a[2005][2005];
int main(){
	int num,x;
	cin>>n>>h>>delta;
	for(int i=1;i<=n;i++){
		cin>>num;
		for(int j=1;j<=num;j++)cin>>x,a[i][x]++;
	}
	for(int j=h;j>=0;j--){
		for(int i=1;i<=n;i++){
			f[i][j]=f[i][j+1]+a[i][j];
			for(int k=1;k<=n;k++){
				if(k!=i&&j+delta<=h)
				f[i][j]=max(f[i][j],f[k][j+delta]+a[i][j]);
			}
		}
	}
	int ans=f[1][0];
	for(int i=2;i<=n;i++)ans=max(ans,f[i][0]);
	cout<<ans;
	return 0;
}

7个点全t

2022/10/13 19:03
加载中...