2066. Charm Bracelet

世界弹射物语玩家
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
struct Node{
    int val,wei;
}good[4000];
int f[20000];
int max(int a,int b){
    if(a>b) return a;
    else return b;
}
int main(){
    int n,v;
    scanf("%d%d",&n,&v);
    for(int i=1;i<=n;i++) scanf("%d%d",&good[i].wei,&good[i].val);
    f[v]=0;
    int ans=0;
    for(int j=1;j<=n;j++)
        for(int i=v;i>=0;i--){
            if(good[j].wei>i) break;
            f[i]=max(f[i],f[i-good[j].wei]+good[j].val);
            ans=max(ans,f[i]);
        }
    printf("%d\n",ans);
    return 0;
}

简单背包

你当前正在回复 博客/题目
存在问题!