feat: new tutorial file, TLE solution updated
This commit is contained in:
@@ -1,34 +1,30 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
typedef long long ll;
|
||||
using ll = long long;
|
||||
|
||||
int N;
|
||||
ll W;
|
||||
vector<ll> weight, value;
|
||||
|
||||
ll knapsack(int i, ll w) {
|
||||
if (i == 0 || w == 0) return 0;
|
||||
|
||||
ll res = knapsack(i - 1, w);
|
||||
if (weight[i] <= w)
|
||||
res = max(res, value[i] + knapsack(i - 1, w - weight[i]));
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
int main() {
|
||||
int N, W; cin >> N >> W;
|
||||
vector<pair<ll,ll>> items(N+1);
|
||||
for (int i = 1; i <= N; i++) {
|
||||
ll wi, vi; cin >> wi >> vi;
|
||||
items[i] = {wi, vi};
|
||||
}
|
||||
cin >> N >> W;
|
||||
weight.resize(N + 1);
|
||||
value.resize(N + 1);
|
||||
|
||||
ll ans = 0;
|
||||
for (ll i = 0; i < (1<<N); i++) {
|
||||
ll capacity = W, value = 0;
|
||||
for (int j = 0; j < N; j++) {
|
||||
auto [wj, vj] = items[j + 1];
|
||||
if (((i >> j) & 1)) {
|
||||
if (capacity >= wj) {
|
||||
capacity -= wj;
|
||||
value += vj;
|
||||
} else {
|
||||
value = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
ans = max(ans, value);
|
||||
}
|
||||
|
||||
cout << ans << endl;
|
||||
for (int i = 1; i <= N; i++)
|
||||
cin >> weight[i] >> value[i];
|
||||
|
||||
cout << knapsack(N, W) << "\n";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user