10分求调教
查看原帖
10分求调教
1402457
wangjunyi0413楼主2025/7/30 16:33
#include<bits/stdc++.h>
using namespace std;
int s,n,b;
int f[110][10][10][10][10][10];
int m[10];
int v[110][10];
int w[110];
map<int,int> tbl;
map<int,int>::iterator it;
int main(){
    cin>>s;
    for(int i=1;i<=s;i++){
    	int n;
    	cin>>n;
    	for(int j=1;j<=n;j++){
    		int c,k;
    		cin>>c>>k;
    		it=tbl.find(c);
    		if(it==tbl.end()){
    			int sz=tbl.size();
    			tbl[c]=sz+1;
			}
			v[i][tbl[c]]=k;
		}
		int p;
		cin>>p;
		w[i]=p;
	}
	cin>>b;
	for(int i=1;i<=b;i++){
		int c,k,p;
		cin>>c>>k>>p;
		it=tbl.find(c);
		if(it==tbl.end()){
			int sz=tbl.size();
			tbl[c]=sz+1;
		}else{}
		v[s+i][tbl[c]]=1;
		w[s+i]=p;
		m[i]=k;
	}
	memset(f,0x3f,sizeof(f));
	f[0][0][0][0][0][0]=0;
	for(int i=1;i<=s+b;i++){
		for(int j=0;j<=m[1];j++){
			for(int k=0;k<=m[2];k++){
				for(int x=0;x<=m[3];x++){
					for(int y=0;y<=m[4];y++){
						for(int z=0;z<=m[5];z++){
							f[i][j][k][x][y][z]=f[i-1][j][k][x][y][z];
							if(v[i][1]<=j&&v[i][2]<=k&&v[i][3]<=x&&v[i][4]<=y&&v[i][5]<=z)
							f[i][j][k][x][y][z]=min(f[i][j][k][x][y][z],f[i][j-v[i][1]][k-v[i][2]][x-v[i][3]][y-v[i][4]][z-v[i][5]]+w[i]);
						}
					}
				}
			}
		}
	}
	cout<<f[s+b][m[1]][m[2]][m[3]][m[4]][m[5]]<<endl;
    return 0;
}
2025/7/30 16:33
加载中...