Submission #601421

#TimeUsernameProblemLanguageResultExecution timeMemory
601421codergirlKnapsack (NOI18_knapsack)C++14
73 / 100
1086 ms4036 KiB
#include<bits/stdc++.h>

const int maxn=100005;
long c[maxn],value[maxn],num[maxn], dp[maxn];
int V;

void ZeroOnePack (long cost,long val){
    for(long i=V;i>=cost;i--) {
        dp[i]=std::max(dp[i],dp[i-cost] + val);
    }
    return ;
}

int main() {
    int n;
    std::cin>>V>>n; // knapsack size V, n kinds of items
    for(long i=1;i<=n;i++) {
        std::cin>>value[i]>>c[i]>>num[i]; // weight, value, quantity
    }
    for(long i=1;i<=n;i++) {
        long k=1;
        while(k<num[i]){
            ZeroOnePack(k * c[i], k * value[i]);
            num[i]-=k;
            k*=2;
        }
        ZeroOnePack(num[i]*c[i],num[i]*value[i]);
    }
    std::cout<<dp[V]<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...