chenyuxuan02 @ 2019-07-23 15:54:16
#include<iostream>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<ctime>
#include<map>
#include<set>
using namespace std;
int s[100][3];
int a[101],b[101],c[101];
int f[61000];
int main()
{
int n,m,i,j,sum=0,q,l=0,x,y;
cin>>n>>m;
n/=10;
for(i=1;i<=m;i++)
{
cin>>a[i]>>b[i]>>q;
a[i]/=10;
if(q==0)c[++l]=i;
else
{
if(s[q][1]==0)s[q][1]=i;
else s[q][2]=i;
}
}
memset(f,0,sizeof(f));
for(i=1;i<=l;i++)
{
q=c[i];
for(j=n;j>=a[q];j--)
{
f[j]=max(f[j],f[j-a[q]]+a[q]*b[q]);
x=s[q][1],y=s[q][2];
if(x!=0&&j-a[q]-a[x]>=0)
f[j]=max(f[j],f[j-a[q]-a[x]]+a[q]*b[q]+a[x]*b[x]);
if(y!=0)
{
if(j-a[q]-a[y]>=0)f[j]=max(f[j],f[j-a[q]-a[y]]+a[q]*b[q]+a[y]*b[y]);
if(j-a[q]-a[x]-a[y]>=0)f[j]=max(f[j],f[j-a[q]-a[x]-a[y]]+a[q]*b[q]+a[y]*b[y]+a[x]*b[x]);
}
}
sum=max(sum,f[j]);
}
cout<<sum*10<<endl;
return 0;
}
答案都不对,为什么啊?Orz