1 条题解

  • 0
    @ 2024-12-24 9:59:27

    C :

    #include <stdio.h>
    #include <string.h>
    #define maxc 100
    #define maxv 1000
    int dp[maxv]={0};
    int v[maxc]={0};
    int p[maxc]={0};
    int c[maxc]={0};
    int max(int x,int y){
    	return x>y?x:y;
    }
    int main()
    {
    	int i,j,k,n,m,nn,e;
    	scanf("%d",&nn);
    	for(e=0;e<nn;e++){
    		scanf("%d%d",&m,&n);
    		memset(dp,0,sizeof(dp));
    		
    		for(i=0;i<n;i++){
    			scanf("%d%d%d",&v[i],&p[i],&c[i]);
    		}
    		for(i=0;i<n;i++){
    			for(j=m;j>=0;j--){
    			for(k=0;k<=c[i];k++){
    				if(j-k*v[i]>=0){
    					dp[j]=max(dp[j],dp[j-k*v[i]]+p[i]*k);
    				}
    			}
    			}
    		}
    		printf("%d\n",dp[m]);
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    1500
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者