zoukankan      html  css  js  c++  java
  • 51 Nod 1086 多重背包问题(单调队列优化)

    1086 背包问题 V2 

    基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题

     收藏

     关注

    有N种物品,每种物品的数量为C1,C2......Cn。从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2......Wn(Wi为整数),与之相对应的价值为P1,P2......Pn(Pi为整数)。求背包能够容纳的最大价值。

    Input

    第1行,2个整数,N和W中间用空格隔开。N为物品的种类,W为背包的容量。(1 <= N <= 100,1 <= W <= 50000)
    第2 - N + 1行,每行3个整数,Wi,Pi和Ci分别是物品体积、价值和数量。(1 <= Wi, Pi <= 10000, 1 <= Ci <= 200)

    Output

    输出可以容纳的最大价值。

    Input示例

    3 6
    2 2 5
    3 3 8
    1 4 1

    Output示例

    9
    
    #include<bits/stdc++.h>
    #include<stdio.h>
    #include<iostream>
    #include<cmath>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<map>
    #include<iomanip>
    #include<algorithm>
    #include<stack>
    #define inf 0x3f3f3f3f
    using namespace std;
    typedef long long ll;
    int n,W;
    int w[105];//体积
    int v[105];//价值
    int cnt[105];//数量
    int dp[50005];
    int deq[50005];//双端队列(保存数组下标)
    int deqv[50005];//双端队列(保存值)
    void solve()
    {
        for(int i=1;i<=n;i++){
            for(int a=0;a<w[i];a++){
                int s=0,t=0;//双端队列的头部和尾部
                for(int j=0;j*w[i]+a<=W;j++){
                    int val=dp[j*w[i]+a]-j*v[i];
                    while(s<t&&deqv[t-1]<=val)t--;
                    deq[t]=j;
                    deqv[t++]=val;
                    dp[j*w[i]+a]=deqv[s]+j*v[i];
                    if(deq[s]==j-cnt[i]){
                        s++;
                    }
                }
            }
        }
    }
    int main()
    {
    #ifndef ONLINE_JUDGE
        freopen("in.txt","r",stdin);
    #endif // ONLIN
        scanf("%d%d",&n,&W);
        for(int i=1;i<=n;i++)scanf("%d%d%d",&w[i],&v[i],&cnt[i]);
        solve();
        printf("%d
    ",dp[W]);
        return 0;
    }
    
    
    
    
    
  • 相关阅读:
    公钥,私钥和数字签名这样最好理解
    SolrCloud的官方配置方式
    由于Windows和Linux行尾标识引起脚本无法运行的解决
    python模块名和文件名冲突解决
    Linux下编译安装python3
    Storm集群的安装配置
    Linux下编译安装Apache 2.4
    SELinux的关闭与开启
    Spring MVC配置静态资源的正常访问
    SolrCloud环境配置
  • 原文地址:https://www.cnblogs.com/linruier/p/9588291.html
Copyright © 2011-2022 走看看