求助,#2#3#5超时
查看原帖
求助,#2#3#5超时
560807
木棉絮123楼主2022/8/8 15:55

附源码

#include<bits/stdc++.h>
#define max(a,b) a<b?b:a
using namespace std;
const int MAXN=1e5+5,MAXG=1e2;
int n,m,g[MAXG],v[MAXG][MAXN],c[MAXG][MAXN],bg[MAXG][MAXN],f[MAXN];
int main()
{
	//freopen("P2967_2.in","r",stdin);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i][0]>>g[i];
		for(int j=1;j<=g[i];j++)
		{
			cin>>c[i][j]>>v[i][j];
			c[i][10001]+=c[i][j];
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=g[i];j++)
		{
			for(int k=c[i][10001];k>=c[i][j];k--)
			{
				bg[i][k]=max(bg[i][k],bg[i][k-c[i][j]]+v[i][j]);
			}
		}
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=m;j>=0;j--)
		{
			for(int k=0;k<=min(j-c[i][0],c[i][10001]);k++)
			{
				f[j]=max(f[j],f[j-k-c[i][0]]+bg[i][k]);
			}
		}
	}
	cout<<f[m]<<endl;
	return 0;
}
2022/8/8 15:55
加载中...