【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); }