不败败寇 @ 2019-09-06 19:38:29
#include<bits/stdc++.h>
using namespace std;
const int V=32020;
int v[65][3],p[65][3],size[65],m[V];
int n0,m0;
int main(){
scanf("%d%d",&n0,&m0);
for(int i=1;i<=m0;i++){
int v0,p0,q0;
scanf("%d%d%d",&v0,&p0,&q0);
if(!q0){
v[i][0]=v0;
p[i][0]=p0*v0;
}
else{
size[q0]++;
v[q0][size[q0]]=v0;
p[q0][size[q0]]=p0*v0;
}
}
for(int i=1;i<=m0;i++){
for(int j=n0;j>=v[i][0];j--){
m[j]=max(m[j],m[j-v[i][0]]+p[i][0]);
for(int k=1;k<=size[i];k++){
if(j>=v[i][0]+v[i][k])
m[j]=max(m[j],m[j-v[i][0]-v[i][k]]+p[i][0]+p[i][k]);
}
}
}
printf("%d",m[n0]);
return 0;
}