当前位置: 首页 > news >正文

快站建站怎么收费的建设网银怎么提高转账限额

快站建站怎么收费的,建设网银怎么提高转账限额,开封景区网站建设项目方案,网站虚拟主持人题目:携带研究材料 问题描述 52. 携带研究材料(第七期模拟笔试) 小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研…

题目:携带研究材料

问题描述

52. 携带研究材料(第七期模拟笔试)

小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的重量,并且具有不同的价值。

小明的行李箱所能承担的总重量是有限的,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料可以选择无数次,并且可以重复选择。

输入描述

第一行包含两个整数,n,v,分别表示研究材料的种类和行李所能承担的总重量 

接下来包含 n 行,每行两个整数 wi 和 vi,代表第 i 种研究材料的重量和价值

输出描述

输出一个整数,表示最大价值。

输入示例
4 5
1 2
2 4
3 4
4 5
输出示例
10
提示信息

第一种材料选择五次,可以达到最大值。

数据范围:

1 <= n <= 10000;
1 <= v <= 10000;
1 <= wi, vi <= 10^9.

解题步骤

这一题与我们的01背包最大不同点在于:物品可以取多次

那么就意味着遍历顺序可以不用倒序来避免重复

同时递推公式也有相应变化

那么还是从动态规划五部曲来细品区别所在

1.确定dp数组下标及其含义

我们还是先用二维数组帮助理解

i同样代表在0~i号物品中选取,j依旧是背包容量

dp[i][j]指当背包容量为j时,装0~i号物品的最大重量为dp[i][j]

vector<vector<int>> dp(n,vector<int>(v+1));//n为物品种数,v为背包最大容量

2.遍历顺序

我认为先考虑遍历顺序逻辑会更清晰一点

和01背包一样,我们需要两个循环,一个遍历物品一个遍历背包容量

那么完全背包也一样,区别就是上面提到过的不用倒序遍历

for(int i=0;i<n;i++){ // i 的起始值要看后续初始化而定,这里暂时写为0

        for(int j=0;j<=v;j++){

这个遍历表示依次从物品0开始,往容量不断增大的背包里放东西

对于物品0的一行来说,就是只要背包的容量够weight[0]就往里面放入0号物品,使重量不断增大

3.递推公式

由于物品可以选取多次

那么不选择 i 号物品时,dp[ i ][ j ]=dp[ i-1 ][ j ];

选择i号物品时,首先是需要背包容量足够

if( j >weight[ i ])

再放入物品i,增加背包价值 

dp[ i ][ j ]=dp[ i ][ j - weight[i] ]+value[ i ];

翻译一下就是牺牲背包容量换取可能更大的价值 

但由于这个情况可能不如放前面的东西更值钱

所以我们要用max函数选取最大值

 dp[ i ][ j ]=max(dp[ i-1 ][ j ],dp[ i ][ j - weight[i] ]+value[ i ]);

 4.初始化

 有了前面的铺垫,相信大家已经能模拟dp数组的生成过程了,

从第0行开始逐个生成,那么我们依靠的还是第一行和第一列

所以需要初始化这些地方,

对于第一行,前面已经提到过对于物品0的一行来说,就是只要背包的容量够weight[0]就往里面放入0号物品,使重量不断增大

for(int j=0;j<=v;j++){

        dp[0][j]=dp[0][j-weight[0]]+value[0];

}

对于第一列,实际意义为背包容量为0时,可以从0~i号选取物品放入的最大价值

那么显然是0

可以单独初始化

for(int i=0;i<n;i++){

        dp[i][0]=0;

也可在声明dp数组时顺手就初始化了

 vector<vector<int>> dp(n,vector<int>(v+1,0));

第五步就是用于检查,这里不再赘述,

我们完善一下之前没做完的工作

初始化结束,第一行已经有值,我们应该从i=1开始遍历

所以完整代码如下! 

code

#include<bits/stdc++.h>
using namespace std;
int main(){int n,v;cin>>n>>v;vector<int> weight(n),value(n);for(int i=0;i<n;i++){cin>>weight[i]>>value[i];}vector<vector<int>> dp(n,vector<int>(v+1,0));for(int j=weight[0];j<=v;j++){dp[0][j]=dp[0][j-weight[0]]+value[0];//一直塞0号}for(int i=1;i<n;i++){for(int j=0;j<=v;j++){if (j < weight[i]) dp[i][j] = dp[i - 1][j];else    dp[i][j]=max(dp[i-1][j],dp[i][j-weight[i]]+value[i]);}}cout<<dp[n-1][v]<<endl;return 0;
}

http://www.dtcms.com/a/417558.html

相关文章:

  • com域名注册1元铁岭网站seo
  • 网站制作 温州建设银行佛山分行网站
  • 青岛网站定制开发烟台网站建设哪家专业
  • 江门网站建设方案优化wordpress全局歌曲
  • 上海设计师网站有哪些秦皇岛房产局网签查询
  • 深圳最新消息今天新增病例怎么做网站的优化
  • 营销网站制作设计网站海外推广技巧
  • 门户网站建设和运行招标文件莱芜新闻头条
  • 国外网站翻墙怎么做文学网站开发
  • 互联网中厂有哪些公司东莞网站优化方法有哪些
  • 常用网站代码广州洲聚网站开发
  • 永久免费网站建设百度指数的使用方法
  • 茂名网站建设服务扬州新闻头条最新消息
  • 用ps怎么做网站步骤做网站的怎么获取客户信息
  • 网站建设 江苏做外汇应该看哪一家网站
  • 网站建设项目数智慧团建入口登录网站
  • 如何加强旅游电子商务网站的建设计算机网站建设与管理是什么
  • 做网站如何对接支付网站建设与建设
  • 营销网站建设的重要性网上开店的基本流程有哪些
  • 书店网站网站建设规划书一个网站可以同时几个主域名吗
  • 商标设计网站猪八戒WordPress文章设置时间免费
  • 公司做网站需要哪些内容不限次数观看视频的app
  • 网站能用到管理后台上吗陇南建设网站
  • 企业建网站选中企动力网站搭建书籍推荐
  • 男和男人怎么做那个视频网站广州10大网站服务品牌
  • 淘宝联盟链接的网站怎么做司法局网站建设工作汇报
  • 网站的前端怎么做移动端网站开发前端模板
  • 链接网站制作百度站长平台链接
  • 邢台网站建设免费做网站排名专业的深圳网站建设公司哪家好
  • 门户网站怎么开发百度搜索站长平台