xynuoj 1426 逃亡的准备(多重背包或混合背包)

原创 2018年04月17日 10:41:00

1426: 逃亡的准备

时间限制: 1 Sec  内存限制: 128 MB
提交: 13  解决: 7
您该题的状态:已完成
[提交][状态][讨论版]

题目描述

      每个人小时候都有自己的理想,但随着时间推移,渐渐的大多数人的理想变成了金钱.地位.面子... 于是大多数人 就变成了传说中的俗人。但我们的中中始终有自己的梦想,他要 环 游 世 界! 在20XX年X月X日中中开始环游世 界的准备工作.他开始准备自己的行囊
中中背包的容积为m ,中中有n样有用的东西 ,每样东西都有自己的价值Wi,和体积Vi ,每一样物品有Ni个 (Ni=0时表示有无限多个),于是乎我们的问题就是(你应该已经猜到了)...中中能带走的 东西的最大价值。
30%数据满足  1 <= m,n <=1000
100%数据满足  1 <=m,n <= 10000

输入

第 1 行: N,M--物品的种类和背包的容积 
第 2-N+1 行: Vi,Wi,Pi--三个整数:每个物品的体积.价值.个数

输出

单独的一行在给定的限制里可能得到的最大的价值。

样例输入

5 50 1 1 502 4 348 49 11 51 13 3 3

样例输出

106

题中描述有ni=0时可以无线取,典型的混合背包,但是队友当时没注意,用了多重背包,由此可见,后台数据都没有ni=0的情况,完全背包不考虑也行。但是用普通的多重背包,队友好像时间超限了,混合背包模板在我别的博客也有,就不贴了。

多重背包优化做法:

//求指定体积V下的最大价值 
#include <iostream> 
#include<string.h>
#include<algorithm>
#include<stdio.h> 
using namespace std;
#define ll long long
int dp[10050];
int wi[10050];//价值 
int vi[10050];//体积 
int pi[10050];//个数
int Value[111110];
int size[111110];
int main()
{
    //count存储分解完后的物品总数  
    //Value存储分解完后每件物品的价值  
    //size存储分解完后每件物品的体积  
	int n,v;
	scanf("%d%d",&n,&v);
	int count=0;
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d%d",&vi[i],&wi[i],&pi[i]);
		for(int j=1; j<=pi[i]; j<<=1)
        {
                //<<右移1位,相当于乘2  
            Value[count]=j*wi[i];  
            size[count++]=j*vi[i]; 
            pi[i]-=j;  
        }  
        if(pi[i]>0)  
        {  
            Value[count]=pi[i]*wi[i];  
            size[count++]=pi[i]*vi[i];  
        }
	} 
        //经过上面对每一种物品的分解,  
        //现在Value[]存的就是分解后的物品价值  
        //size[]存的就是分解后的物品体积  
        //count就相当于原来的 n
        //下面就直接用01背包算法来解  
        memset(dp,0,sizeof(dp));
        for(int i=0; i<count;i++)
            for(int j=v;j>=size[i];j--)
                if(dp[j]<dp[j-size[i]]+Value[i]) 
                    dp[j]=dp[j-size[i]]+Value[i]; 
  
        printf("%d\n",dp[v]);    
    return 0;
}  
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BBHHTT/article/details/79971232

rnqoj 98 逃亡的准备 多重背包问题

http://www.rqnoj.cn/problem/98这个问题其实就是一个背包问题   只是他的背包有许多相同的,这样就增加了背包的水量,刚开始我使用一般背包问题的解法来解这道题结果直接超时我刚...
  • u010840444
  • u010840444
  • 2014-03-13 15:52:39
  • 715

SSL P1236 逃亡的准备

题目: http://blog.csdn.net/qq_35786326/article/details/79048011 题意: 求如何组合放入背包的物品可以将价值最大化 分析: 这道题,直接将多重...
  • qq_35786326
  • qq_35786326
  • 2018-01-12 21:01:37
  • 36

逃亡的准备(动态规划)

Description   在《Harry Potter and the Deathly Hallows》中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有...
  • chrisblogtk
  • chrisblogtk
  • 2016-04-08 21:48:19
  • 952

逃亡的准备(多重背包+二进制优化)

逃亡的准备问题描述: 在《Harry Potter and the Deathly Hallows》中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小有限,所...
  • cax1165
  • cax1165
  • 2016-10-05 15:31:03
  • 817

背包问题教程-01背包,完全背包,多重背包,混合背包 收藏

P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路 这是最基础的背包问题,特点是:...
  • judyge
  • judyge
  • 2015-05-10 15:31:38
  • 227

背包问题——01背包、完全背包、多重背包、混合三种背包问题

转自: http://apps.hi.baidu.com/share/detail/14968747 P01: 01背包问题 题目 有N件物品和一个容量为V的背包。第i...
  • hcwzq
  • hcwzq
  • 2011-08-04 21:26:43
  • 1782

背包问题详解(01背包,完全背包,多重背包,混合背包,二维费用背包……)

  • 2010年10月16日 22:21
  • 124KB
  • 下载

ssl1236-逃亡准备【dp之多重背包】

Description   在《Harry Potter and the Deathly Hallows》中,Harry Potter他们一起逃亡,现在有许多的东西要放到赫敏的包里面,但是包的大小...
  • Mr_wuyongcong
  • Mr_wuyongcong
  • 2017-12-15 21:23:25
  • 61

rnqoj-98-逃亡的准备-背包

一个物品x可以取0~m件。 那么可以简化成在 0个x,1个x,2个x,4个x。。。中取任意件 #include #include #include using namespace std; ...
  • rowanhaoa
  • rowanhaoa
  • 2013-10-11 17:12:59
  • 858

xynuoj 1435 混合背包

1435: 混合背包时间限制: 1 Sec  内存限制: 128 MB提交: 12  解决: 11您该题的状态:已完成[提交][状态][讨论版]题目描述      一个旅行者有一个最多能用V公斤的背包...
  • BBHHTT
  • BBHHTT
  • 2018-04-17 10:33:03
  • 4
收藏助手
不良信息举报
您举报文章:xynuoj 1426 逃亡的准备(多重背包或混合背包)
举报原因:
原因补充:

(最多只允许输入30个字)