zoukankan      html  css  js  c++  java
  • 2602 ACM 杭电 骨头容器 01背包

    这里写图片描述这里写图片描述


    题意:装骨头的容器大小固定,有一堆骨头,已知骨头的价值和大小,在不超过容积大小的情况下,问:所装骨头的最大价值?

    思路:典型的01背包问题,不需要有任何的变动。
    模板:
    for(int j=v;j>=a[i].w;j–) //v是容积
    {
    dp[j]=max(dp[j],dp[j-a[i].w]+a[i].val);
    }
    注意:
    1 数组dp的必须初始化(memset( dp,0,sizeof(dp))),还要够大,但是用int 定义就好了
    2 输出结果后要换行( )
    3 要勾选C++才能过

    #include<stdio.h>
    #include<string.h>
    
    #define max(a,b) a>b?a:b
    
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            int N,V,val[1002],vol[1002],total=0,dp[50050];
            memset( dp,0,sizeof(dp));
            scanf("%d%d",&N,&V);
            for(int i=0;i<N;i++)
            {
                scanf("%d",&val[i]);
                total+=val[i];
            }
            for(int i=0;i<N;i++)
                scanf("%d",&vol[i]);
            for(int i=0;i<N;i++)
                for(int j=V;j>=vol[i];j--)
                dp[j]=max(dp[j],dp[j-vol[i]]+val[i]);
            printf("%d
    ",dp[V]);
        }
    }
  • 相关阅读:
    玩游戏(dfs)
    Find them, Catch them(并查集)
    Shredding Company(dfs)
    Sudoku(dfs)
    Network Saboteur(dfs)
    棋盘问题(dfs)
    Curling 2.0(dfs)
    A Knight's Journey(dfs)
    15. 3Sum
    12. Integer to Roman
  • 原文地址:https://www.cnblogs.com/CheeseIce/p/9588697.html
Copyright © 2011-2022 走看看