#include<bits/stdc++.h>
using namespace std;#definedbdouble#definelllonglong#definePirpair<int,int>#definefifirst#definesesecond#definepbpush_back#definem_pmake_pair#defineinf0x3f3f3f3f#defineINF0x3f3f3f3f3f3f3f3f/*==========ACMer===========*/constint N =42005;int f[65][N];structNode{int v, w;} fa[65];
vector<Node> son[65];int n, m;intmain(){scanf("%d %d",&m,&n);
m /=10;int a, b, c;for(int i =1; i <= n; i ++){scanf("%d %d %d",&a,&b,&c);if(c ==0)
fa[i]= Node{ a /10, a * b };else
son[c].pb(Node{ a /10, a * b });}for(int i =1; i <= n; i ++){if(fa[i].v){for(int j = fa[i].v; j <= m; j ++)
f[i][j]= f[i -1][j - fa[i].v]+ fa[i].w;for(auto x : son[i]){for(int j = m; j >= x.v; j --){if(f[i][j - x.v]>0){
f[i][j]=max(f[i][j], f[i][j - x.v]+ x.w);}}}}for(int j =0; j <= m; j ++)
f[i][j]=max(f[i][j], f[i -1][j]);}printf("%d\n", f[n][m]);return0;}
代码#include <bits/stdc++.h>using namespace std;#define db double#define ll long long#define Pir pair<int, int>#define fi first#define se second#define pb push_back#define m_p make_pair#define inf 0x3f3f3f3f#define INF 0x3f3f3f3f.