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

【背包题】oj题库

目录

1282 - 简单背包问题

1780 - 采灵芝

1888 - 多重背包(1)​编辑

1891 - 开心的金明

2073 - 码头的集装箱

1905 - 混合背包


1282 - 简单背包问题

#include <bits/stdc++.h>
using namespace std;
//二维数组:dp[i][j]=max(dp[i-1][j],v[i]+dp[i-1][j-w[i]])
//一维数组滚动优化:
//状态转移方程:dp[j]=max(dp[j],v[i]+dp[j-w[i]])
int w;//背包容量
int dp[20010];
int n,wi,vi;int main() {cin>>w>>n;//遍历每个物品for(int i=1; i <= n; i++) {cin>>wi>>vi;
//倒过来循环for(int j=w; j>= wi; j--) {
//讨论每个物品选和不选的两个状态
//取能到的价值的最大值dp[j]= max(dp[j],dp[j-wi]+ vi);}}cout<<dp[w];return 0;
}
#include <bits/stdc++.h>
using namespace std;//动态转移方程:dp[i][j]=max(dp[i-1][j],v[i]+dp[i-1][j-w[i]])
//c:代表背包容量
//dp[i][j]:有i件物品,背包容量为了的情况下存储的最大价值
int c,dp[110][20100],w[110],v[110],i,j,n;
int main() {
//读入cin>>c>>n;for(i =1; i<= n; i++) {cin>>w[i]>>v[i];}//递推求 dp 数组//i:代表物品数量for(i = 1; i <= n; i++) {//在i件物品,讨论背包容量分别是1~c的情况下,最大价值//j:代表背包容量for(j= 1; j<= c; j++) {//如果能放得下if(w[i]<= j) {dp[i][j]= max(dp[i-1][j],v[i]+dp[i-1][j-w[i]]);} else {//放不下dp[i][j]= dp[i-1][j];}}}//输出n件物品,背包容量为c的最大价值cout<<dp[n][c];return 0;
}

1780 - 采灵芝

#include <bits/stdc++.h>
using namespace std;/*完全背包状态转移方程
二维写法:f[i][j]= max(f[i-1]], f[i][j-w[i]]+v[])
一维写法:f[]j=max(f[j],f-w[i]]+v[i])
一维状态转义方程和01背包一致,要注意,完全背包要从前往后推导。*/
int t,m;
int f[100010];
int ti,vi;//每个物品的采摘时间和价值
int main() {cin>>t>>m;//读入m个物品 for(int i = 1; i<= m; i++) {cin>>ti>>vi;//正序循环 
//从当前物品的重量(采摘时间)~背包容量最大时间)循环for(int j = ti; j <= t; j++) {f[j] = max(f[j],f[j-ti]+vi);}}cout<<f[t];//背包能够存储的最大价值return 0;
}

1888 - 多重背包(1)

#include <bits/stdc++.h>
using namespace std;
/*01背包:每种物品有1件
完全背包:每种物品有无限件数多
重背包:每种物品有Si件
解题思路:将多重背包转换为01背包
将si件物品都存起来,转换为有si个物品,每个物品有1件*/
int n,c;//c背包容量
int v[10010],w[10010];
int dp[110];
int vi,wi,si,k;//k代表数组下标
int main() {cin>>n>>c;for(int i=1; i <= n; i++) {cin>>vi>>wi>>si;//第i个物品有si件,都存入数组for(int j=1; j<= si; j++) {k++;v[k]= vi;w[k]= wi;}}
//01 背包for(int i=1; i <= k; i++) { //逆序从背包容量循环到当前物品体积for(int j=c; j >= v[i]; j--) {dp[j]= max(dp[j],dp[j-v[i]]+w[i]);}}cout<<dp[c];return 0;
}
#include <bits/stdc++.h>
using namespace std;
/*01背包:每种物品有1件
完全背包:每种物品有无限件数多
重背包:每种物品有Si件
解题思路:将多重背包转换为01背包
将si件物品都存起来,转换为有si个物品,每个物品有1件*/
int n,c;//c背包容量
int v[110],w[110],s[110];
int dp[110];int main() {cin>>n>>c;for(int i=1; i <= n; i++) {cin>>v[i]>>w[i]>>s[i];//第i个物品有si件,都存入数组}
//01 背包
//有n个物品for(int i=1; i<= n; i++) {for(int k=1; k<= s[i]; k++) {//逆序从背包容量循环到当前物品体积for(int j=c; j>= v[i]; j--) {dp[j]= max(dp[j],dp[j-v[i]]+w[i]);}}}
//	for(int i=1; i <= k; i++) {
//		//逆序从背包容量循环到当前物品体积
//		for(int j=c; j >= v[i]; j--) {
//			dp[j]= max(dp[j],dp[j-v[i]]+w[i]);
//		}
//	}cout<<dp[c];return 0;
}

1891 - 开心的金明

题目描述

金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早金明就开始做预算,但是他想买的东西太多了,肯定会超过妈妈限定的NN元。于是,他把每件物品规定了一个重要度,分为55等:用整数1-51−5表示,第55等最重要。他还从因特网上查到了每件物品的价格(都是整数元)。他希望在不超过NN元(可以等于NN元)的前提下,使每件物品的价格与重要度的乘积的总和最大。

设第jj件物品的价格为v[j]v[j],重要度为w[j]w[j],共选中了kk件物品,编号依次为j_1,j_2,…,j_kj1​,j2​,…,jk​,则所求的总和为:

v[j_1] \times w[j_1]+v[j_2] \times w[j_2]+ …+v[j_k] \times w[j_k]v[j1​]×w[j1​]+v[j2​]×w[j2​]+…+v[jk​]×w[jk​]。

请你帮助金明设计一个满足要求的购物单。

#include <bits/stdc++.h>
using namespace std;int w[30],v[30],f[50000];
//w数组为重要度,v数组为money,f是用来dp的数组
int n,m;//n是总物品个数,m是总钱数
int main() {cin>>m>>n;//输入for(int i=1; i<=n; i++) {cin>>v[i]>>w[i];w[i]*=v[i];//v数组在这里意义变为总收获(重要度*money)}
//01背包(参照第二类模板“一维数组优化”for(int i=1; i<=n; i++) {for(int j=m; j>=v[i]; j--) {
//注意从m开始if(j>=v[i]) {f[j]=max(f[j],f[j-v[i]]+w[i]);//dp}}}cout<<f[m]<<endl;//背包大小为m时最大值return 0;
}

2073 - 码头的集装箱

题目描述

码头上停泊一艘远洋轮船,轮船可以装下 cc 吨的货物,码头上有 nn 个集装箱需要运走,已知第 ii 个集装箱的重量为w_iwi​。

请你编程计算,在不超出轮船最大载重量的情况下,该轮船最多可以运走多少吨的集装箱。(注意:单个集装箱不能拆开运送,对于每个集装箱来说,要么整个运到轮船上,要么不运)

#include <bits/stdc++.h>
using namespace std;int n,c,w;
int f[40000];
int main() {cin>>n>>c;for(int i = 1; i <= n; i++) {cin>>w;for(int j=c; j>=w; j--) {f[j] = max(f[j],f[j-w]+w);}}cout<<f[c];
return 0;
}

1905 - 混合背包

题目描述

有 NN 种物品和一个容量是 VV 的背包。

物品一共有三类:

  1. 第一类物品只能用 11 次(01背包);

  2. 第二类物品可以用无限次(完全背包);

  3. 第三类物品最多只能用 s_isi​ 次(多重背包);

每种体积是 v_ivi​,价值是 w_iwi​。

求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。

输出最大价值。

#include <bits/stdc++.h>
using namespace std;
const int N=20000;
int v[N],w[N],s[N];
int vi,wi,si;
int k=0;//表示存入数组的数据量
int dp[1010];
int n,m;
int main() {cin>>n>>m;for(int i=1; i<= n; i++) {cin>>vi>>wi>>si;//如果是多重背包,做二进制拆分if(si > 0) {int t=1;while(t<= si) {k++;w[k]= t * wi;v[k]= t * vi;s[k]=-1;//转换为 01 背包si= si -t;t= t * 2;}if(si >0) {k++;w[k]= si * wi;v[k]= si * vi;s[k]=-1;//01背包}} else {k++;w[k]= wi;v[k]= vi;s[k]= si;}}
//计算//循环k个物品for(int i=1; i<= k; i++) { //判断是01背包还是完全背包if(s[i]== -1) {for(int j= m; j >= v[i]; j--) {dp[j]= max(dp[j],dp[j-v[i]]+w[i]);}} else {for(int j = v[i]; j<= m; j++) {dp[j]= max(dp[j],dp[j-v[i]]+w[i]);}}}cout<<dp[m];return 0;
}

相关文章:

【背包题】oj题库

目录 1282 - 简单背包问题 1780 - 采灵芝 1888 - 多重背包&#xff08;1&#xff09;​编辑 1891 - 开心的金明 2073 - 码头的集装箱 1905 - 混合背包 1282 - 简单背包问题 #include <bits/stdc.h> using namespace std; //二维数组:dp[i][j]max(dp[i-1][j],v[i]dp[…...

Web前端弱势因素:深入探讨与挑战解析

Web前端弱势因素&#xff1a;深入探讨与挑战解析 在快速发展的Web前端领域&#xff0c;尽管技术日新月异&#xff0c;但仍存在一些固有的弱势因素。这些因素不仅影响了开发效率和用户体验&#xff0c;也带来了诸多挑战。本文将深入探讨Web前端的弱势因素&#xff0c;并从四个方…...

元素在超出当前界面的下拉列表中如何定位

有时我们会遇到一种情况是&#xff0c;当我们找一个视频列表中的视频&#xff0c;在页面的最底层&#xff0c;此时selenium 无法定位到这个元素&#xff0c;因为 selenium只能定位页面上显示出来内容的元素&#xff0c;需要通过下拉框把界面拉到该元素所在的位置&#xff0c;再…...

Vscode中使用make命令

前言 需要注意&#xff0c;如下操作需要进行网络代理&#xff0c;否则会出现安装失败的情况 安装 第一步 — 安装MingGW &#xff08;1&#xff09;进入官网下载 &#xff08;2&#xff09;下载完成之后&#xff0c;双击exe文件 &#xff08;3&#xff09;点击Install &#x…...

配置完eslint没有用?

当你使用 npx eslint --init 生成配置文件后 你也配置好了.prettierrc 当你在代码写一点小问题的时候 发现eslint没有进行检查 原因是你生成的 .eslintrc.js中没有加上这个配置 extends: [.....plugin:prettier/recommended],加上以后重启vscode你会发现...

[Nacos]No spring.config.import property has been defined

在学习 Spring Cloud Alibaba &#xff0c;Nacos组件&#xff0c;创建一个cloudalibaba-config-nacos-client&#xff0c;加载多配置集时遇到问题 配置了 bootstrap.yml 后启动项目报错&#xff1a; 是因为在springcloud 2020.0.2版本中把bootstrap的相关依赖从spring-cloud-s…...

【操作与配置】Pytorch环境搭建

安装显卡驱动 显卡驱动是一种软件程序&#xff0c;用于控制显卡硬件与操作系统之间的通信和交互。显卡驱动负责向操作系统提供有关显卡硬件的信息&#xff0c;以及使操作系统能够正确地控制和管理显卡的各种功能和性能。显卡驱动还包含了针对不同应用程序和游戏的优化&#xff…...

判断QT程序是否重复运行

打开exe&#xff0c;再次打开进行提示。 main.cpp添加&#xff1a; #include "QtFilePreview.h" #include <QtWidgets/QApplication> #include <windows.h> #include <qmessagebox.h> #pragma execution_character_set("utf-8")bool Ch…...

利用Axios封装及泛型实现定制化HTTP请求处理

本案例旨在教授如何使用Axios库结合TypeScript泛型进行HTTP请求的高级封装&#xff0c;以提升代码的可复用性和类型安全性。我们将通过一个具体的示例&#xff0c;学习如何创建一个通用的请求函数&#xff0c;它能够适应不同类型的API响应&#xff0c;并在请求前后加入自定义逻…...

RN6752V1 高性能AHD转MIPIDVPBT656BT601芯片方案,目前适用于车载方案居多

RN6752V1描述&#xff1a; RN6752V1是一种模拟高清晰度&#xff08;模拟高清&#xff09;视频解码器IC&#xff0c;专为汽车应用而设计。它集成了所有必要的功能块&#xff1a; AFE&#xff0c;PLL&#xff0c;解码逻辑&#xff0c;MIPI和I2C接口等&#xff0c;在一个小的5mm …...

Rust 基金会的商标政策更新引发社区争议

Rust 基金会最近更新了其商标政策&#xff0c;引发了社区内的一些争议。 Rust 是一种高性能系统编程语言&#xff0c;拥有庞大的开发者社区。Rust 基金会成立于 2020 年&#xff0c;旨在支持和推动 Rust 语言的发展。该基金会负责管理 Rust 的商标&#xff0c;并制定了商标使用…...

Java Opencv识别图片上的虫子

最近有个需求&#xff0c;希望识别图片上的虫子&#xff0c;对于java来说&#xff0c;图像识别不是很好做。在网上也搜索了很多&#xff0c;很多的代码都是不完整&#xff0c;或者下载下载报错&#xff0c;有的写的很长看不懂。所以自己试着用java的opencv写了一段代码。发现识…...

微型操作系统内核源码详解系列五(1):arm cortex m3架构

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…...

值传递和址传递

值传递 上面的代码是想要交换x&#xff0c;y的值&#xff0c;把x&#xff0c;y传递给swap函数之后&#xff0c;执行下面的操作&#xff1a; 在swap中a和b交换了&#xff0c;但是和x&#xff0c;y没有关系&#xff0c;所以x&#xff0c;y在main中不会变。 址传递 下面再看把x…...

【three.js】自定义物体形状BufferGeometry

目录 一、认识缓冲类型几何体BufferGeometry 二、将各个顶点连线 一、认识缓冲类型几何体BufferGeometry threejs的长方体BoxGeometry、球体SphereGeometry等几何体都是基于BoxGeometry类构建的,BufferGeometry是一个没有任何形状的空几何体,你可以通过BufferGeometry自定…...

Mac 使用 Homebrew 安装 Python3

在macOS系统中&#xff0c;使用Homebrew安装Python3并进行环境配置的步骤如下&#xff1a; 打开终端。 运行以下命令安装Python3&#xff1a; brew install python3 安装完成后&#xff0c;可以通过以下命令检查Python3的版本&#xff1a; python3 --version 为了确保终端…...

汽车行驶中是怎么保障轴瓦安全的?

汽车轴瓦是一种用于减少摩擦和支撑转动部件的关键零部件&#xff0c;通常用于发动机的曲轴、凸轮轴等转动部件上。主要作用是减少转动部件之间的摩擦&#xff0c;支撑和保护曲轴、凸轮轴等旋转部件&#xff0c;确保它们在高速旋转时的稳定性和耐用性。 在汽车轴瓦加工过程中&am…...

洗地机哪款好?洗地机十大名牌排行榜

随着科技的发展&#xff0c;各种家居清洁工具层出不穷&#xff0c;为我们的生活带来了诸多便利。在众多清洁工具中&#xff0c;洗地机的清洁效果更受大家喜爱&#xff0c;它能够完美解决了扫地机无法做到的干湿垃圾“一遍清洁”效果&#xff0c;而且几乎能解决日常生活中所有的…...

spark mllib 特征学习笔记 (二)

当然&#xff0c;请继续介绍其他特征处理方法的公式、适用场景和案例&#xff1a; 10. StringIndexer 公式&#xff1a; 将字符串类型的标签转换为数值索引&#xff1a; StringIndexer ( x ) { 0 , 1 , 2 , … , N − 1 } \text{StringIndexer}(x) \{0, 1, 2, \ldots, N-1…...

湘潭大学软件工程数据库2(题型,复习资源和计划)

文章目录 选择题关系范式事务分析E-R 图sql作业题答案链接&#xff08;仅限有官方答案的版本&#xff09;结语 现在实验全部做完了&#xff0c;实验和作业占比是百分之 40 &#xff0c;通过上图可以看出来&#xff0c;重点是 sql 语言 所以接下来主要就是学习 sql 语句怎么书写…...

第二十三节:带你梳理Vue2:Vue插槽的认识和基本使用

前言: 通过上一节的学习,我们知道了如何将数据从父组件中传递到子组件中, 除了除了将数据作为props传入到组件中,Vue还允许传入HTML, Vue 实现了一套内容分发的 API&#xff0c;这套 API 的设计灵感源自 Web Components 规范草案&#xff0c;将 <slot> 元素作为承载分发…...

父亲节马上到了-和我一起用Python写父亲节的祝福吧

前言 让我们一起用Python写一段父亲节的祝福吧 &#x1f4dd;个人主页→数据挖掘博主ZTLJQ的主页 个人推荐python学习系列&#xff1a; ☄️爬虫JS逆向系列专栏 - 爬虫逆向教学 ☄️python系列专栏 - 从零开始学python 话不多说先上代码 import tkinter as tk from doctest imp…...

winform 应用程序 添加 wpf控件后影响窗体DPI改变

第一步&#xff1a;添加 应用程序清单文件 app.manifest 第二步&#xff1a;把这段配置 注释放开&#xff0c;第一个配置true 改成false...

Web前端开发素材:探索、选择与应用的艺术

Web前端开发素材&#xff1a;探索、选择与应用的艺术 在Web前端开发的广袤领域中&#xff0c;素材的选择与应用无疑是一项至关重要的技能。它们如同构建网页的砖石&#xff0c;既承载着设计的美感&#xff0c;又影响着用户体验的深度。本文将从四个方面、五个方面、六个方面和…...

LeetCode | 20.有效的括号

这道题就是栈这种数据结构的应用&#xff0c;当我们遇到左括号的时候&#xff0c;比如{,(,[&#xff0c;就压栈&#xff0c;当遇到右括号的时候&#xff0c;比如},),]&#xff0c;就把栈顶元素弹出&#xff0c;如果不匹配&#xff0c;则返回False&#xff0c;当遍历完所有元素后…...

ceph scrub 错误记录

目的 记录 ceph scrub 错误问题解决 ceph scrub 故障故障信息 cluster:id: xxx-xxx-xxxhealth: HEALTH_ERR2 scrub errorsPossible data damage: 2 pg inconsistentmessage 日志信息 # egrep -i medium|i\/o error|sector|Prefailure /var/log/messages Jun 15 00:23:37 m…...

cs与msf权限传递,以及mimikatz抓取明文密码

cs与msf权限传递&#xff0c;以及mimikatz抓取win10明文密码 1、环境准备2、Cobalt Strike ------> MSF2.1 Cobalt Strike拿权限2.2 将CS权限传递给msf 3、MSF ------> Cobalt Strike3.1 msf拿权限3.2 将msf权限传递给CS 4、使用mimikatz抓取明文密码 1、环境准备 攻击&…...

Windows下的zip压缩包版Mysql8.3.0数据迁移到Mysql8.4.0可以用拷贝data文件夹的方式

Windows下的zip压缩包版Mysql8.3.0数据迁移到Mysql8.4.0可以用拷贝data文件夹的方式 拷贝后, 所有账户和数据都是一样的 步骤 停止MySQL服务 net stop mysql 或 sc.exe stop mysql net stop mysqlsc.exe stop mysql卸载 Mysql8.3.0 的服务 mysqld remove 或 mysqld remove m…...

软件体系结构笔记(自用)

来自《软件体系结构原理、方法与实践&#xff08;第三版&#xff09;》清华大学出版社 张友生编著 1-8章12章 复习笔记 如有错误&#xff0c;欢迎指正&#xff01;&#xff01;&#xff01;...

java安装并配置环境

安装前请确保本机没有java的残留&#xff0c;否则将会安装报错 1.安装java jdk&#xff1a;安装路径Java Downloads | Oracle 中国 百度网盘链接&#xff1a;https://pan.baidu.com/s/11-3f2QEquIG3JYw4syklmQ 提取码&#xff1a;518e 2.双击 按照流程直接点击下一步&#x…...

自己的公众号/企业seo顾问服务

错误原因:端口号冲突或者被占用&#xff1a; 解决办法:停掉正占用端口号的服务&#xff0c;或者在tomcat的config下配置port端口号新的名字 详细解决为: 2.启动报错: 1.暴力:找到占用的端口号并找到对应的进程&#xff0c;并杀死该进程|netstat -ano 找到端口对应的 PI…...

北京 房地产 网站建设/sem推广竞价

jdk7及以前&#xff1a; 通过-XX:PermSize 来设置永久代初始分配空间&#xff0c;默认值是20.75m -XX:MaxPermSize来设定永久代最大可分配空间&#xff0c;32位是64m&#xff0c;64位是82m jdk8及之后&#xff1a; 通过-XX:MetaspaceSize 来设置永久代初始分配空间&#xff…...

如何做seo优化/seo网络优化专员

请设计一个函数&#xff0c;用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。 路径可以从矩阵中的任意一个格子开始&#xff0c;每一步可以在矩阵中向左&#xff0c;向右&#xff0c;向上&#xff0c;向下移动一个格子。 如果一条路径经过了矩阵中的某一个格子…...

如何管理企业网站/个人网上卖货的平台

先说一下这两个命令的用法格式&#xff1a;--起一个名字为A的savepoion savepoint A(这个A是savepoint的名字) --跳转到savepoint A处 rollback to A一旦执行了rollback那么savepoint的操作都将撤消&#xff0c;当然最后一定执行一次commit&#xff0c;否则所有的操作都是在缓存…...

湖北省住房和城乡建设厅网站的公示公告/360开户推广

尤拉公式----关于凸多面体之间顶点数/面数/边数之间的关系 若G为一连通之平面图,则V F E 2其中V代表G中点的个数, F代表G中面的个数, 而E是G的边数. 应用&#xff1a;在一个圆上给你n个点&#xff0c;求n个点可以把圆分为几个区域 分析&#xff1a;根据欧拉定理可知&#xf…...

昆明网站排名优化公司/廊坊seo关键词优化

6.引用 1.什么是引用&#xff1f; 引用不是新定义一个变量&#xff0c;而是给已存在变量取了一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的变量共用同一块内存空间。 **类型& 引用变量名(对象名) 引用实体&#xff1b;**void TestRef(…...