【codevs1669】运输装备

这个题输入有问题,体积和重量反了,而且好像数据也很水,要是按题意算,我的时间复杂度最坏就成了O(1000*1000*1000)。可是一个二维背包打上去就过了。哎呀不操心了。这毕竟也是个二维背包的好板子23333

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int v,g,n,ti[1010],vi[1010],gi[1010],dp[1010][1010],ans;//dp[i][j]表示用了i体积,j重量 
int main()
{
    scanf("%d%d%d",&g,&v,&n);
    for(int i=1;i<=n;i++)
        scanf("%d%d%d",&ti[i],&gi[i],&vi[i]);//价值,重量,体积 
    for(int i=1;i<=n;i++)
        for(int j=v;j>=vi[i];j--)//体积 
            for(int k=g;k>=gi[i];k--)//重量 
                dp[j][k]=max(dp[j][k],dp[j-vi[i]][k-gi[i]]+ti[i]),ans=max(ans,dp[j][k]);
    printf("%d",ans); 
}

 

posted @ 2017-10-23 09:37  那一抹落日的橙  阅读(160)  评论(0编辑  收藏  举报