92分求助:(
查看原帖
92分求助:(
766436
Mr_RedStone楼主2023/8/6 15:19

代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct Cutoff{
	int k,p;
	int id[5],s[5];
}v[110];
struct Good{
	int id,s,v;
}a[15];
int pos[1005];
int f[6][6][6][6][6];
int main() {
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&v[i].k);
		for(int j=1;j<=v[i].k;j++){
			scanf("%d %d",&v[i].id[j],&v[i].s[j]);
		}
		scanf("%d",&v[i].p);
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++){
		scanf("%d %d %d",&a[i].id,&a[i].s,&a[i].v);
		pos[a[i].id]=i;
	}
	for(int s1=0;s1<=a[1].s;s1++){
		for(int s2=0;s2<=a[2].s;s2++){
			for(int s3=0;s3<=a[3].s;s3++){
				for(int s4=0;s4<=a[4].s;s4++){
					for(int s5=0;s5<=a[5].s;s5++){
						f[s1][s2][s3][s4][s5]=s1*a[1].v+s2*a[2].v+s3*a[3].v+s4*a[4].v+s5*a[5].v;
						for(int i=1;i<=n;i++){
							int t[6]={0};
							for(int j=1;j<=v[i].k;j++){
								t[pos[v[i].id[j]]]=v[i].s[j];
							}
							if(s1<t[1]||s2<t[2]||s3<t[3]||s4<t[4]||s5<t[5]){
								continue;
							}
							f[s1][s2][s3][s4][s5]=min(f[s1][s2][s3][s4][s5],f[s1-t[1]][s2-t[2]][s3-t[3]][s4-t[4]][s5-t[5]]+v[i].p);
						}
					}
				}
			}
		}
	}
	printf("%d",f[a[1].s][a[2].s][a[3].s][a[4].s][a[5].s]);
    return 0;
}

样例4wa了:(

2023/8/6 15:19
加载中...