parent
c7c8716979
commit
6ea59ccbe5
@ -1,37 +0,0 @@
|
||||
#include <bits/stdc++.h>
|
||||
#define v first
|
||||
#define w second
|
||||
using namespace std;
|
||||
typedef pair<int, int> PII;
|
||||
const int N = 70, M = 30010;
|
||||
int n, m, f[M];
|
||||
PII master[N];
|
||||
vector<PII> servent[N];
|
||||
int main() {
|
||||
cin >> m >> n;
|
||||
for (int i = 1; i <= n; i++) {
|
||||
int v, w, q;
|
||||
cin >> v >> w >> q;
|
||||
if (q == 0)
|
||||
master[i] = {v, v * w};
|
||||
else
|
||||
servent[q].push_back({v, v * w});
|
||||
}
|
||||
for (int i = 1; i <= n; i++)
|
||||
if (master[i].v) {
|
||||
for (int j = m; j >= 0; j--) {
|
||||
auto &sv = servent[i];
|
||||
for (int k = 0; k < 1 << sv.size(); k++) {
|
||||
int v = master[i].v, w = master[i].w;
|
||||
for (int u = 0; u < sv.size(); u++)
|
||||
if (k >> u & 1) {
|
||||
v += sv[u].v;
|
||||
w += sv[u].w;
|
||||
}
|
||||
if (j >= v) f[j] = max(f[j], f[j - v] + w);
|
||||
}
|
||||
}
|
||||
}
|
||||
cout << f[m] << endl;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in new issue