求助,为什么是10分?有WA,也有RE

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

lzsyxxyjlyjl @ 2016-10-03 18:00:27

#include<iostream>
#include<cstdio>
using namespace std;
int v,n,c[33000],p[33000],q[33000],fj[33000][3],f[33000],num;
int main()
{
    cin>>v>>n;
    for (int i=1;i<=n;i++) {
        cin>>c[i]>>p[i]>>q[i];
        p[i]*=c[i];
        if (q[i] && !fj[q[i]][1]) fj[q[i]][1]=i;
        else if (q[i]) fj[q[i]][2]=i;
    }
    for (int i=1;i<=n;i++)
        for (int j=v;j>=c[i];j--)
            if (!q[i]) {
                f[j]=max(f[j],f[j-c[i]]+p[i]);
                if (fj[i][1] && j-c[i]-c[fj[i][1]]>=0) 
                    f[j]=max(f[j],f[j-c[i]-c[fj[i][1]]]+p[i]+p[fj[i][1]]);
                if (fj[i][2] && j-c[i]-c[fj[i][2]]>=0) 
                    f[j]=max(f[j],f[j-c[i]-c[fj[i][2]]]+p[i]+p[fj[i][2]]);
                if (fj[i][1] && fj[i][2] && j-c[i]-c[fj[i][1]]-c[fj[i][2]]>=0) 
                    f[j]=max(f[j],f[j-c[i]-c[fj[i][1]-c[fj[i][2]]]]+p[i]+p[fj[i][1]]+p[fj[i][2]]);
            }
    cout<<f[v];
    return 0;
}

by lzsyxxyjlyjl @ 2016-10-03 18:23:57

谢谢,已经找到问题了,[ ]写茬了…………


|