全是wa,不知道错哪了,求大佬看看

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

karen111 @ 2023-08-08 18:21:54

#include<iostream>
#include<cmath>
using namespace std;
int n,m,v1,p1,q1,a;
int main_v[70],main_p[70],vf[70][3],pf[70][3];
int dp[70][32010];

int main(){
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>v1>>p1>>q1;
        if (q1==0){
            main_v[i]=v1;
            main_p[i]=p1*v1;

        }
        if (q1>0){
            vf[q1][0]++;
            vf[q1][vf[q1][0]]=v1;
            pf[q1][vf[q1][0]]=p1*v1;

        }
    }

    for(int i=1;i<=m;i++){
        for(int j=n;main_v[i]!=0 && j>=main_v[i];j--){

            a=dp[i-1][j-main_v[i]]+main_p[i];
            dp[i][j]=max(dp[i-1][j],a);

            if (j>=main_v[i]+vf[i][1]) {
                a=dp[i-1][j-main_v[i]-vf[i][1]]+main_p[i]+pf[i][1];
                dp[i][j]=max(dp[i-1][j],a);
            }

            if (j>=main_v[i]+vf[i][2]){
                a=dp[i-1][j-main_v[i]-vf[i][2]]+main_p[i]+pf[i][2];
                dp[i][j]=max(dp[i-1][j],a);

            } 
            if (j>=main_v[i]+vf[i][1]+vf[i][2]){
                a=dp[i-1][j-main_v[i]-vf[i][1]-vf[i][2]]+main_p[i]+pf[i][1]+pf[i][2];
                dp[i][j]=max(dp[i-1][j],a);
            } 

        }
    }

    cout<<dp[m][n]<<endl;

    return 0;
}

by yee__ @ 2023-08-08 18:44:40

帮你试了,没有语法,数据库之类的问题, 问题应该在循环判断里 建议看看题解


|