3 solutions

  • 1
    @ 2024-3-23 16:56:49

    from 别人的题解

    #include<bits/stdc++.h>
    using namespace std;
    int v,n,t;
    int w[1001],a[1001][32],c[1001],f[201];
    int main(){
    	scanf("%d%d%d",&v,&n,&t);	
    	for (int i=1;i<=n;i++){
    		int p;
    		scanf("%d%d%d",&w[i],&c[i],&p);
    		a[p][++a[p][0]]=i;
    	}
    		
    	for (int p=1;p<=t;p++)
    		for(int j=v;j>=0;j--)
    			for(int i=1;i<=a[p][0];i++){
    			if(j>=w[a[p][i]]){
    				int tmp=a[p][i];
    				if(f[j]<f[j-w[tmp]]+c[tmp])
    				f[j]=f[j-w[tmp]]+c[tmp];
    			}
    			}
    	printf("%d",f[v]);
    }
    

    Information

    ID
    757
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    # Submissions
    48
    Accepted
    18
    Uploaded By