1 solutions

  • 0
    @ 2025-11-5 19:34:24

    C :

    #include<stdio.h>
    #include<string.h>
    #define MAXN 10
    typedef struct
    {
        int c;
        int m;
    }NODE;
    NODE s[MAXN];
    long f[MAXN][MAXN][MAXN][MAXN][MAXN];
    int sum[105][1005];
    int ans,t;
    long min(long x,long y)
    {
        return x<y?x:y;
    }
    int main(void)
    {
        //freopen("shopping.in","r",stdin);
        //freopen("shopping.out","w",stdout);
        int i,j,n,l,a1,a2,a3,a4,a5,b1,b2,b3,b4,b5;
        scanf("%d",&ans);
        memset(sum,0,sizeof(sum));
        for(i=1;i<=ans;i++)
        {
            scanf("%d",&n);
            for(j=1;j<=n;j++)
            {
               scanf("%d",&l);
               scanf("%d",&sum[i][l]);
            }
            scanf("%d",&sum[i][1001]);
        }
        scanf("%d",&t);
        for(i=1;i<=t;i++)
        {
        scanf("%d%d%d",&s[i].c,&s[i].m,&sum[++ans][1001]);
        sum[ans][s[i].c]=1;
        }
        memset(f,1,sizeof(f));
        f[0][0][0][0][0]=0;
        for(i=1;i<=ans;i++)
        {
            a1=sum[i][s[1].c];
            a2=sum[i][s[2].c];
            a3=sum[i][s[3].c];
            a4=sum[i][s[4].c];
            a5=sum[i][s[5].c];
            for(b1=a1;b1<=s[1].m;b1++)
            for(b2=a2;b2<=s[2].m;b2++)
            for(b3=a3;b3<=s[3].m;b3++)
            for(b4=a4;b4<=s[4].m;b4++)
            for(b5=a5;b5<=s[5].m;b5++)
            f[b1][b2][b3][b4][b5]=min(f[b1][b2][b3][b4][b5],f[b1-a1][b2-a2][b3-a3][b4-a4][b5-a5]+sum[i][1001]);
        }
        printf("%ld\n",f[s[1].m][s[2].m][s[3].m][s[4].m][s[5].m]);
        return 0;
    }
    

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int f[6][6][6][6][6];
    int num[1000]={0};
    int w[100][6];
    int h[100];
    int v[6];
    int mm;
    int main(){
    	int s;
    	cin>>s;
    	for(int i=0;i<s;i++){
    		int n;
    		cin>>n;
    		for(int j=0;j<n;j++){
    			int a,b;
    			cin>>a>>b;
    			if(!num[a])num[a]=++mm;
    			w[i][num[a]]=b;
    		}
    		cin>>h[i];
    	}
    	int hh;
    	cin>>hh;
    	for(int i=0;i<hh;i++){
    		int c,k;
    		cin>>c>>k;
    		if(!num[c])num[c]=++mm;
    		w[s][num[c]]=1;
    		v[num[c]]=k;
    		cin>>h[s];
    		s++;
    	}
    	memset(f,127,sizeof(f));
        f[0][0][0][0][0]=0;
    	for(int i=0;i<s;i++){
    		for(int j=0;j<=v[1];j++){
    			for(int x=0;x<=v[2];x++){
    				for(int y=0;y<=v[3];y++){
    					for(int n=0;n<=v[4];n++){
    						for(int m=0;m<=v[5];m++){
    							if(j-w[i][1]>=0&&x-w[i][2]>=0&&y-w[i][3]>=0&&n-w[i][4]>=0&&m-w[i][5]>=0){
    								f[j][x][y][n][m]=min(f[j][x][y][n][m],f[j-w[i][1]][x-w[i][2]][y-w[i][3]][n-w[i][4]][m-w[i][5]]+h[i]);
    							}
    						}
    					}
    				}
    			}
    		}
    	}
    	cout<<f[v[1]][v[2]][v[3]][v[4]][v[5]]<<endl;
    	return 0;
    }
    

    Pascal :

    begin
      end.
    
    • 1

    Information

    ID
    19405
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By