HDU 2602 Bone Collector 動態規劃 01揹包

解題報告:

思路:01揹包裸題。

代碼:

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

const ll N = 1e3 + 10;

ll w[N], v[N];
ll dp[N];
ll n, V;

void solve(){
    memset(dp, 0, sizeof(dp));
    for(ll i=0; i<n; ++i){
        for(ll j=V; j>=w[i]; --j){
            dp[j] = max(dp[j], dp[j-w[i]] + v[i]);
        }
    }
    printf("%lld\n", dp[V]);
}

int main(){
    ll t;
    scanf("%lld", &t);
    while(t--){
        scanf("%lld%lld", &n, &V);
        for(ll i=0; i<n; ++i){
            scanf("%lld", v + i);
        }
        for(ll i=0; i<n; ++i){
            scanf("%lld", w + i);
        }
        solve();
    }
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章