完全背包+背包装满 总结

目录

1.背包恰好装满

(1)问题是什么

(2)问题的有效状态和无效状态

(3)问题的常考形式,以及如何去处理

1.值的大小

2.组合个数

3.排列个数

2.例题

A. Cut Ribbon

HDU1114 Piggy-Bank 


1.背包恰好装满

(1)问题是什么

背包恰好装满的最大价值可以拆分成两个子问题

1.背包能否背恰好装满

2.如果可以恰好装满,那么恰好装满的时候的最大价值为多少

(2)问题的有效状态和无效状态

对于这种问题,背包的有效状态指的是背包为空,或者是背包恰好装满

无效状态指的是背包装了东西,但是没有装满

!!!!!!!!结论:任何有效状态都是由有效状态推出来的,无效状态无法推出有效状态 

(3)问题的常考形式,以及如何去处理

1.值的大小

2.组合个数

3.排列个数

首先我们在这篇博客主要讨论的是值的大小,一般会有两种考向:

一个是容量为j的背包,最多能装多少物品

一个是容量为j的背包,最少能装多少物品 

(1)对于第一个来说

既然其有效状态是为了求最大值,我们就要将无效状态的值变为一个最小值,这样完全背包的代码,无效值就无法去影响有效值的计算了

(2)对于第二个来说

和第一个相反,将无效状态变为一个最大值,别的没有任何区别 

2.例题

A. Cut Ribbon

 

CF上一个div2的A题,那么必然就是一个简单的模版题了, 就是完全背包+判断背包装满是的最大的丝带数,然后就要用到我们的第一种情况了,让无效状态的值是一个int类型的最小值,然后正常去进行完全背包就可以直接拿下了

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
int a[5];
int dp[4005];

signed main()
{
	cin>>n;
	for(int i=1;i<=3;i++)
	{
		cin>>a[i];
	}
	memset(dp,-0x3f3f3f3f,sizeof(dp));//既然他想求最大值,那么我们就将非法状态设置为int类型的负无穷
	dp[0]=0;//长度为0,那肯定最大缎带数量为0;
	
	for(int i=1;i<=3;i++)
	{
		for(int j=a[i];j<=n;j++)
		{
			dp[j]=max(dp[j],dp[j-a[i]]+1);
		}
	}
	printf("%lld",dp[n]);
	return 0;
}

HDU1114 Piggy-Bank 

 

这个就相当于一个给我一个容量为f-e的背包,去判断这么个背包装满的时候,最少能装多少价值的物品,第二种情况,将无效状态设为int类型的最大值即可(我这边设置的是long long 类型的最大值,反正都是一个效果)

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
#define int long long
int t;
int e,f;
int n;
int w[505];
int p[505];
int dp[10005];//表示的是j公斤,所得到的最小价值为dp[j]
//因为要求最小金额,那么我们一上来给dp初始化为int最大值 
signed main() 
{
	cin>>t;
	while(t--)
	{
		cin>>e>>f;
		cin>>n;
		for(int i=1;i<=n;i++)
		{
			cin>>p[i]>>w[i];
		}
		memset(dp,0x3f3f3f3f3f3f3f3f,sizeof(dp));
		dp[0]=0;
		for(int i=1;i<=n;i++)
		{
			for(int j=w[i];j<=f-e;j++)
			{
				dp[j]=min(dp[j],dp[j-w[i]]+p[i]);
			}
		}
		if(dp[f-e]!=0x3f3f3f3f3f3f3f3f)
		{
			printf("The minimum amount of money in the piggy-bank is %lld.\n",dp[f-e]);
		}
		if(dp[f-e]==0x3f3f3f3f3f3f3f3f)
		printf("This is impossible.");
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/650856.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机视觉中-语义分割

语义分割 语义分割是计算机视觉中的一个关键技术&#xff0c;它涉及对图像中的每个像素进行类别划分&#xff0c;从而识别出图像中的不同物体或区域。具体来说&#xff0c;语义分割就是按照“语义”给图像上目标类别中的每一点打上一个标签&#xff0c;使得不同种类的东西在图像…

装机必备——WinRAR安装教程

装机必备——WinRAR安装教程 软件下载 软件名称&#xff1a;WinRAR 软件语言&#xff1a;简体中文 软件大小&#xff1a;3.38M 系统要求&#xff1a;Windows7或更高&#xff0c; 32/64位操作系统 硬件要求&#xff1a;CPU2GHz &#xff0c;RAM4G或更高 下载通道①迅雷云盘丨下…

AI重塑了我的工作流

阅读内容 Inhai: Agentic Workflow&#xff1a;AI 重塑了我的工作流 4 种主要的 Agentic Workflow 设计模式 Reflection&#xff08;反思&#xff09;&#xff1a;让 Agent 审视和修正自己生成的输出。 举例&#xff1a;如果有两个 Agent&#xff1a;一个负责 Coding&#…

【uniapp】uniapp基本介绍

目录 介绍体验uni-app优势功能框架图 uni-app组成和跨端原理基本语言和开发规范 编译器运行时&#xff08;runtime&#xff09;uni-app runtime包括3部分&#xff1a;基础框架、组件、API基础框架&#xff1a;组件&#xff1a;组件的扩展&#xff1a; API&#xff1a; 逻辑层和…

工业网关设备:HiWoo Box网关

在数字化、智能化的工业浪潮中&#xff0c;工业网关以其卓越的性能和广泛的应用场景&#xff0c;成为了工业互联的核心驱动力。作为一款高效、稳定、智能的工业网关设备&#xff0c;HiWoo Box网关不仅实现了工业现场设备与网络的高效连接&#xff0c;更为企业提供了智能化的数据…

C++青少年简明教程:switch语句

C青少年简明教程&#xff1a;switch语句 在C中&#xff0c;switch语句用于基于一个表达式的值来执行不同的代码块。这个表达式通常是一个整数类型&#xff08;如int&#xff0c;char&#xff0c;或枚举类型&#xff09;&#xff0c;并且case标签必须是整数常量表达式。 语法格…

Node.js —— Express 中间件、接口编写、接口跨域 【0基础向Express模块学习】

目录 中间件的概念 什么是中间件 现实生活中的例子 Express 中间件的调用流程 ​编辑 Express 中间件的格式 next 函数的作用 Express 中间件的初体验 定义中间件函数 全局生效的中间件 定义全局中间件的简化形式 中间件的作用 ​编辑 定义多个全局中间件 局部生…

【技术分享】Maven常用配置

一、Maven简介 &#xff08;一&#xff09;为什么使用 Maven 由于 Java 的生态非常丰富&#xff0c;无论你想实现什么功能&#xff0c;都能找到对应的工具类&#xff0c;这些工具类都是以 jar 包的形式出现的&#xff0c;例如 Spring&#xff0c;SpringMVC、MyBatis、数据库驱…

OrangePi Kunpeng Pro 开发板测评及Python开发实测

一、背景 首先感谢 创新乐知通过CSDN 邀请本人&#xff0c;参与这次 评测活动。这块开发板是香橙派联合华为精心打造&#xff0c;具有超强算力的鲲鹏开发板。本人使用最多的还是树莓派系列的板子&#xff0c;国产板子特别是华为为核心的板子还是头一次使用&#xff0c;特别感兴…

Linux-挂盘-分区-卸盘

Linux-挂盘-分区-卸盘 1. 添加硬盘 2. 查看硬盘 [rootlocalhost /]# lsblk # 查看我们新添加的磁盘 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 80G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 …

Ubuntu22.04之解决:忘记登录密码(二百三十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

深入解读 ChatGPT 的基本原理(个人总结版)

引言 背景 人工智能&#xff08;AI&#xff09;技术自20世纪中期诞生以来&#xff0c;经历了多次革新和进步。从最早的图灵测试&#xff0c;到20世纪末的深蓝计算机击败国际象棋冠军&#xff0c;再到21世纪初谷歌AlphaGo击败围棋冠军&#xff0c;AI技术的飞速发展改变了人们的…

【数理统计03】集中不等式

集中不等式&#xff08;concentration inequalities&#xff09;是在概率论和统计学中用于描述随机变量&#xff08;尤其是随机变量的和或函数&#xff09;的集中程度的一类不等式。它们为随机变量偏离其期望值的概率提供了上界。这些不等式在很多领域都有应用&#xff0c;包括…

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理!

3D 生成重建015-nerf2mesh从神经辐射场中提取mesh和纹理&#xff01; 文章目录 0 论文工作1 论文方法2 效果 0 论文工作 NeRF2Mesh 提出了一种从多视角 RGB 图像重建纹理表面网格的新方法。它克服了传统 NeRF 模型的局限性&#xff0c;由于其隐式表示&#xff0c;传统 NeRF 模…

代码随想录算法训练营第20天 |● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 前言654.最大二叉树思路方法一 递归法方法一2 老师的优化递归法 617.合并二叉树思路方法一 递归法方法二 迭代法 700.二叉搜索树中的搜索思路方法一 递归法方法二 迭代法 98.验证二叉搜索树思路方法一 使用数组方法二 不使用数组代码注意点&#xff1a; 方法二 使用双…

mysql中连接查询的成本

大家好。上篇文章我们讲了mysql中成本的含义以及单表查询如何计算成本。现在我们接着讲讲mysql中连接查询的成本。 在讲之前&#xff0c;我们先创建两张一样的表single_table和single_table2&#xff0c;并在表中插入10000条数据。在下面的讲解中&#xff0c;我们称single_tab…

PGP安装以及汉化

目录 1.安装 2.汉化 1.安装 (1&#xff09;进入setup目录&#xff0c;双击安装包开始安装 (2&#xff09;选择默认语言English (3&#xff09;接受安装协议 I accept the license agreement (4&#xff09;选择第二项 Do not display the Release Notes (5&#xff09;选择“…

【JavaEE进阶】——要想代码不写死,必须得有spring配置(properties和yml配置文件)

目录 本章目标&#xff1a; &#x1f6a9;配置文件 &#x1f6a9;SpringBoot配置文件 &#x1f388;配置⽂件的格式 &#x1f388; properties 配置⽂件说明 &#x1f4dd;properties语法格式 &#x1f4dd;读取配置文件 &#x1f4dd;properties 缺点分析 &#x1f3…

后端经典三层架构

大家好&#xff0c;这里是教授.F 引入&#xff1a; MVC 全称∶ Model 模型、View 视图、 Controller 控制器。MVC 最早出现在 JavaEE 三层中的 Web 层&#xff0c;它可以有效的指导WEB 层的代码如何有效分离&#xff0c;单独工作。 View 视图∶只负责数据和界面的显示&#…

【LeetCode】力扣第 399 场周赛 优质数对的总数 II

文章目录 1. 优质数对的总数 II 1. 优质数对的总数 II 题目链接 &#x1f34e;该题涉及的小技巧&#xff1a;&#x1f425; &#x1f427;①一次可以统计这个数的 两个因子 但是要注意 25 5 * 5&#xff0c;这种情况 5 只能统计一次噢&#x1f192; 解题思路: &#x1f427…