求助!!

P1064 [NOIP2006 提高组] 金明的预算方案

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


|