Arusu @ 2018-09-03 19:05:56
为什么只有10分?
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cmath>
#define MAXN 33333
using namespace std;
int n,m,v[MAXN],p[MAXN],q[MAXN],f[MAXN],ok[MAXN]={};
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>v[i]>>p[i]>>q[i];
p[i]*=v[i];
}
for(int i=1;i<=m;i++)
for(int j=n;j>=v[i];j--)
{
if(j>v[i]&&q[i]==0)
{
f[j]=max(f[j],f[j-v[i]]+p[i]);
ok[MAXN]++;
}
if(j>v[i]&&q[i]!=0&&ok[q[i]]!=0)
f[j]=max(f[j],f[j-v[i]]+p[i]);
}
cout<<f[n]<<endl;
return 0;
}
by _Felix @ 2018-09-05 13:43:49
可能是你只过了样例