#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
const int N = 2e5 + 10;
int n, m, v[N], p[N], q[N], f[N];
vector<int> vec[100];
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
cin >> v[i] >> p[i] >> q[i];
vec[q[i]].push_back(i);
}
for (int i = 1; i <= m; i++) {
if (q[i])continue;
for (int j = 0; j <= n; j++) {
int tmp = j - v[i];
//0
if (tmp >= 0)f[tmp] = max(f[tmp], f[j] + v[i] * p[i]);
//010
if (vec[j].size() == 0)continue;
tmp = tmp - v[vec[j][0]];
if (tmp >= 0)f[tmp] = max(f[tmp], f[j] + v[i] * p[i] + v[vec[j][0]] * p[vec[j][0]]);
//001
if (vec[j].size() < 1)continue;
tmp = tmp - v[vec[j][1]] + v[vec[j][0]];
if (tmp >= 0)f[tmp] = max(f[tmp], f[j] + v[i] * p[i] + v[vec[j][1]] * p[vec[j][1]]);
//011
tmp = tmp - v[vec[j][0]];
if (tmp >= 0)f[tmp] = max(f[tmp], f[j] + v[i] * p[i] + v[vec[j][0]] * p[vec[j][0]] + v[vec[j][1]] * p[vec[j][1]]);
}
}
int res = 0;
for (int i = 0; i <= n; i++)res = max(res, f[i]);
cout << res << '\n';
}
上面是代码 我下载了第一个测试点,在本地能够正常跑通
但是luogu评测
subtask#0 全部RE,
subtask#1 全部WA,