제출 #1314767

#제출 시각아이디문제언어결과실행 시간메모리
1314767chirantan24Knapsack (NOI18_knapsack)C++20
73 / 100
1096 ms17248 KiB
#include <bits/stdc++.h> using namespace std; int main() { // your code goes here long long n,s; cin>>s>>n; vector<int>w(n),v(n),k(n); vector<long long>values,weights; for(int i=0;i<n;i++){ cin>>v[i]>>w[i]>>k[i]; long long sum = 0; for(int j=0;j<32;j++){ if(sum + (1<<j) > k[i]){ values.push_back((long long)v[i]*(long long)(k[i]-sum)); weights.push_back((long long)w[i]*(long long)(k[i]-sum)); break; } sum += (1<<j); values.push_back((long long)v[i]*(long long)(1<<j)); weights.push_back((long long)w[i]*(long long)(1<<j)); } } int ans = 0; int m = values.size(); vector<long long>dp(s+1,0); for(int i=m-1;i>=0;i--){ for(int j=s;j>=0;j--){ if(j >= weights[i]){ dp[j] = max(dp[j],dp[j-weights[i]] + values[i]); } else break; } } cout<<dp[s]; }
#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...