yagyagyag @ 2019-01-31 10:14:42
#include<bits/stdc++.h>
using namespace std;
int n,m,v,p,q,a[100][3],b[100][3],f[999999];
void dp();
int main()
{
cin>>n>>m;
for (int i=1;i<=m;i++){
cin>>v>>p>>q;
if (!q)
{
a[i][0]=v;
b[i][0]=p;
}
else
{
if (!a[i][1]){
a[q][1]=v;
b[q][1]=p;
}
else {
a[q][2]=v;
b[q][2]=p;
}
}
}
dp();
return 0;
}
void dp()
{
for (int i=1;i<=m;i++)
for (int j=n;j>=0;j--){
if (j-a[i][0]>=0){
f[j]=max(f[j],f[j-a[i][0]]+a[i][0]*b[i][0]);
if (j-a[i][0]-a[i][1]>=0)
f[j]=max(f[j],f[j-a[i][0]-a[i][1]]+a[i][0]*b[i][0]+a[i][1]*b[i][1]);
if (j-a[i][0]-a[i][2]>=0)
f[j]=max(f[j],f[j-a[i][0]-a[i][2]]+a[i][0]*b[i][0]+a[i][2]*b[i][2]);
if (j-a[i][0]-a[i][1]-a[i][2]>=0)
f[j]=max(f[j],f[j-a[i][0]-a[i][1]-a[i][2]]+a[i][0]*b[i][0]+a[i][2]*b[i][2]+a[i][1]*b[i][1]);
}
}
cout<<f[n];
}
by 冷矿泉水 @ 2019-11-09 15:49:09
不是一维的错,是码的错。然而蒟蒻的我看不出来