50分求助
查看原帖
50分求助
665933
__LZH__楼主2023/1/31 11:28
#include<bits/stdc++.h>
using namespace std;
const int N=510;
int a[N],b[N],c[N];
struct Node{
    int x,y;
}dp[N];
int main(){
    int n,q;
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++){
        scanf("%d%d%d",&a[i],&b[i],&c[i]);
    }
    while(q){
        q--;
        int q,f;
        scanf("%d%d",&q,&f);
        for(int i=0;i<=q;i++){
            dp[i].x=0;
            dp[i].y=0;
        } 
        int ans=0;
        for(int i=1;i<=n;i++){
            for(int j=q;j>=a[i];j--){
                if(dp[j].x<(dp[j-a[i]].x+c[i])){
                    dp[j].x=dp[j-a[i]].x+c[i];
                    dp[j].y=dp[j-a[i]].y+b[i];
                }
                if(dp[j].y>=f){
                	ans=max(ans,dp[j].x);
				}
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}
2023/1/31 11:28
加载中...