24分,其余全RE,求助
查看原帖
24分,其余全RE,求助
304775
linyinuo2008楼主2021/4/29 21:47

这里是代码,参考了和其正的题解:

#include <iostream>
#include <cstring>
using namespace std;

int id[1000];
int v[6][100];
int lowc[100];
int c[6];
int buy[6];
int f[6][6][6][6][6];
int num=0;

int main()
{
	memset(id,-1,sizeof(id));
	int s,b;
	cin>>s;
	for(int i=1;i<=s;i++)
	{
		int n,c,k;
		cin>>n;
		for(int j=1;j<=n;i++)
		{
			cin>>c>>k;
			if(id[c]==-1)
			{
				num++;
				id[c]=num;
			}
			v[id[c]][i]=k;		
		}
		cin>>lowc[i];
	}
	cin>>b;
	for(int i=1;i<=b;i++)
	{
		int r;
		cin>>r;
		if(id[r]==-1)
		{
			num++;
			id[r]=num;
		}
		cin>>buy[i]>>c[i];
	}
	for(int i=0;i<=buy[1];i++)
		for(int j=0;j<=buy[2];j++)
			for(int k=0;k<=buy[3];k++)
				for(int p=0;p<=buy[4];p++)
					for(int q=0;q<=buy[5];q++)
					{
						f[i][j][k][p][q]=i*c[1]+j*c[2]+k*c[3]+p*c[4]+q*c[5];
						for(int l=1;l<=s;l++)
						{
							if(i>=v[1][l]&&j>=v[2][l]&&k>=v[3][l]&&p>=v[4][l]&&q>=v[5][l])
								f[i][j][k][p][q]=min(f[i][j][k][p][q],f[i-v[1][l]][j-v[2][l]][k-v[3][l]][p-v[4][l]][q-v[5][l]]+lowc[l]);
						}
					}
	cout<<f[buy[1]][buy[2]][buy[3]][buy[4]][buy[5]];
	return 0;
}
2021/4/29 21:47
加载中...