求指导

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

Taunt @ 2017-02-17 17:48:39

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=42000;
int n,m;
int t[maxn],p[maxn],q[maxn],t1[maxn],t2[maxn],p1[maxn],p2[maxn];
int f[maxn];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=m;i++){
        scanf("%d%d%d",&t[i],&p[i],&q[i]);
        if(q[i]!=0){
            if(t1[q[i]]==0){
                t1[q[i]]=t[i];
                p1[q[i]]=p[i];
            }
            else{
                t2[q[i]]=t[i];
                p2[q[i]]=p[i];
            }
        }
    }
    for(int i=1;i<=m;i++){
        for(int v=n;v>=t[i];v--){
            if(q[i]==0){
                if(v>=t[i])    f[v]=max(f[v],f[v-t[i]]+t[i]*p[i]);
                if(v>=t[i]+t1[i])    f[v]=max(f[v],f[v-t[i]-t1[i]]+t[i]*p[i]+t1[i]*p1[i]);
                if(v>=t[i]+t2[i])    f[v]=max(f[v],f[v-t[i]-t2[i]]+t[i]*p[i]+t2[i]*p2[i]);
                if(v>=t[i]+t1[i]+t2[i])    f[v]=max(f[v],f[v-t[i]-t1[i]-t2[i]]+t[i]*p[i]+t1[i]*p1[i]+t2[i]*t2[i]);
            }
        }
    }
    printf("%d",f[n]);
    return 0;
}

by 刘心远 @ 2017-03-17 19:57:16

最后一个If的最后你写成了t2[i]*t2[i]—>t2[i]*p2[i]!!!!!


|