• 01背包模板


    在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。
    Input
    第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10000)
    第2 - N + 1行,每行2个整数,Wi和Pi,分别是物品的体积和物品的价值。(1 <= Wi, Pi <= 10000)
    Output
    输出可以容纳的最大价值。
    Input示例
    3 6
    2 5
    3 8
    4 9
    Output示例
    14
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <cmath>
    #include <vector>
    #include <algorithm>
    using namespace std;
    #define lowbit(x) (x&(-x))
    #define max(x,y) (x>y?x:y)
    #define min(x,y) (x<y?x:y)
    #define MAX 100000000000000000
    #define MOD 1000000007
    #define PI 3.141592653589793238462
    #define INF 1000000000
    #define mem(a) (memset(a,0,sizeof(a)))
    typedef long long ll;
    int dp[105][10006];
    int w[105],cost[105];
    int n,v;
    int main()
    {
        scanf("%d%d",&n,&v);
        mem(dp);
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&w[i],&cost[i]);
            for(int j=0;j<=v;j++)
            {
                dp[i][j]=dp[i-1][j];
                if(j-w[i]>=0) dp[i][j]=max(dp[i][j],dp[i-1][j-w[i]]+cost[i]);
            }
        }
        printf("%d
    ",dp[n][v]);
        return 0;
    }
  • 相关阅读:
    昨天又学到了dp
    LeetCode面试题17.13
    leetcode971
    今天又一题,单调队列leetcode862
    今天学到了一招,LeetCode863
    今天一道简单题,数组排序LeetCode973
    es面试题
    es的常用配置
    es基础一张图
    JMeter中引入外部的JAR包给bean shell 使用
  • 原文地址:https://www.cnblogs.com/shinianhuanniyijuhaojiubujian/p/7192882.html
Copyright © 2020-2023  润新知