zoukankan      html  css  js  c++  java
  • hdu(3449)(简单的有依赖背包)

    该题在选择物品的时候,必须得选择盒子,因此为有依赖的背包,注意与树形dp的区别
    #include <iostream> #include <cstdio> #include <string.h> using namespace std; int dp[55][100005]; int main() { int n,v,i,j,k,pi,t,c,w; while(scanf("%d%d",&n,&v)!=EOF) { memset(dp,0,sizeof(dp)); for (i=1;i<=n;++i) { scanf("%d%d",&pi,&t); for (j=0;j<pi;++j) dp[i][j]=-1;//表示该状态无法选择 for (j=v;j>=pi;--j) dp[i][j]=dp[i-1][j-pi];//继承上一次的结果 for (k=1;k<=t;++k) { scanf("%d%d",&c,&w); for (j=v;j>=c;--j) if (dp[i][j-c]!=-1)//代表选了选该状态的情况下还要选盒子 { dp[i][j]=max(dp[i][j],dp[i][j-c]+w); } } for (j=v;j>=0;--j)//如果可以更新,那么就进行更新 dp[i][j]=max(dp[i][j],dp[i-1][j]); } printf ("%d\n",dp[n][v]); } return 0; }
  • 相关阅读:
    hdu 3496
    poj 2374
    zoj 3399
    poj 1321
    sgu 365
    hdu 3555
    poj 3345
    poj 2355
    Android重命名文件
    在workflow中传值的sample
  • 原文地址:https://www.cnblogs.com/1994two/p/3071281.html
Copyright © 2011-2022 走看看