背包问题之有依赖的背包(包含模板)

背包问题模板汇总 背包问题介绍一般背包0-1背包描述一维数组优化完全背包描述多重背包二进制优化双端队列优化混合背包 介绍 背包问题(Knapsack problem)是一种组合优化的NP完全问题。它是在1978年由Merkel和Hellman提出的。 问题的描述为: 有一个背包,最多放M kg的物体(物体大小不限); 有n个物体,每个物体的重量为Wi,每个物体完全放入背包后可获得收益Pi。问: 如何放置能获... 阅读详情

有依赖的背包最好理解的题就是NOIP的金明的预算方案,其每个物品有主件和附件,附件必须在主件已经购买了的请款下才能购买,这里牵扯到有依赖的背包的一个问题,将这些进行分组之后就有多种情况即:不能购买主件,只能购买主件,能购买主件和多个附件,这些情况组成了多个可能的情况,
所以这种情况可以先将一个组当中的附件进行一次01背包得到其背包容量为0~V-w[i]时的所有可能情况,然后将整个组当成一个分组背包的一组看待,即此时的组里只需要选择一个可能性即可

我总结了下打出了一个模板,能简单包含这种题型,尤其时像金明的预算方案这样的题稍加修改就能通过:
模板奉上:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace  std;
//简易模板适用于被依赖的物品不能再成为别的物品的附件
struct node
{
	long long w, v;
}a[1005];
int  d[1005];
vector<node>group[1005];
int n, m;
long long dp[1005];
void DP(vector<node>d)
{
	if (d.size() > 1)//有附件
	{
		int k = m - d[0].w;//除了主件剩下的q空间
		long long  *st;
		st = new long long[k];
		memset(st, 0, sizeof st);
		for (int i = 1; i < d.size(); i++)//将附件进行组合,组合成多种可能
		{
			for (int j = k; j >= d[i].w; j++)
				st[j] = max(st[j], st[j - d[i].w] + d[i].v);
		}
		for (int i = m; i >= 0; i--)//剩下的钱,作为分组背包计算
		{
			if (i >= d[0].w)//能买主件
			{
				for (int j = 0; j <= k; j++)
			
背包问题进阶优雅总结【二维费用+分组+有依赖】 目录 作者有话说 二维费用的背包问题 状态定义及转移 物品总个数的限制 小结 分组的背包问题 状态定义及转移 小结 有依赖的背包问题(重要) 分析 最后是非常不正经的ending 作者有话说 本篇博文中的各类数组都从1开始 题目里好像混进去了什么奇怪的东西 二维费用的背包问题 二维费用的背包问题是指:对于每件物品,具有两种不同的费用,选择这件物品必须同时付出这... 阅读详情

相关推荐

ubuntu20.04配置UR机械臂的仿真环境

gazebo和rviz中的机械臂的位姿是一样的,要实现同步控制,可以拖动rviz中的球移动到指定位置,点击plan观察路径规划,点击execute执行该路径规划,可以在gazebo和rviz中同步看到刚刚的路径规划运动,实现了简单的机械臂仿真环境搭建。这是因为catkin找的python版本为anaconda下面的版本,所以需要改为指定采用下面的命令,参考之前的。之后要source一下,才能读取到工作空间里的文件,以后每次打开终端进入工作空间都要执行该命令。时,一直不成功,解决办法可以看我之前写的。

weixin_48319333的博客 3494

TMC22系列步进电机驱动设计:从静音原理到硬件实战

步进电机驱动是运动控制系统的核心,其性能直接影响设备的精度、噪音和效率。传统驱动方案如A4988采用方波控制,存在转矩脉动大、运行噪音高等问题。而高性能驱动通过优化电流波形与切换策略,从根本上提升了运动质量。其中,**StealthChop2**技术通过同步MOSFET开关与电机反电动势过零点,实现了近乎无声的低速运行;**SpreadCycle**模式则通过逼近正弦波的电流调节,优化了中高速动态性能。这些技术为3D打印机、CNC机床、自动化设备等对静音和精度有要求的场景提供了关键解决方案。本文以广泛应用的

weixin_31858171的博客 353

[PCIE5.0] 4.2.3.2 Encoding of Presets

• 发射器预设:发射器预设值用4位二进制编码,表示不同的预设设置(P0 到 P10),这些设置定义了信号的传输特性。• 接收器预设提示:接收器预设提示是通过3位二进制编码告诉接收器建议的增益值,用于调整接收器的灵敏度(适用于8.0 GT/s数据速率)。

系统固件工程师 574

手把手教你学Simulink——基于Simulink的储能PCS(功率转换系统)离网V/f控制仿真示例

本文带你从零开始,在Simulink中硬核还原了一套完整的100kW 储能PCS离网V/f控制系统。通过引入:✅无PLL的自主角度生成机制(实现真正的“构网”能力)✅电压外环与电流内环的双闭环解耦架构(兼顾稳态精度与动态响应)✅黑启动软充电与有源阻尼等工程化手段(确保系统平滑建压与抗谐振)核心收获透彻理解了储能系统在无大电网支撑下的自主运行机理。掌握了从“跟网(Grid-Following)”向“构网(Grid-Forming)”跨越的控制算法核心差异。

MHD0815的博客 77

解决此平台不支持虚拟化的 Intel VT-x/EPT故障问题

当我们在VMware Workstation虚拟机上【启用】虚拟系统(如:Windows10)所在的虚【拟机设置】【处理器】【虚拟化引擎】下面的【虚拟化 Intel VT-x/EPT 或AMD-V/RVI(V)】内容后,在启动虚拟系统时,虚拟系统无法启动,且弹出【此平台不支持虚拟化的 Intel VT-x/EPT。不使用虚拟化的 Intel VT-x/EPT,是否继续】窗口

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 1万+

innovus:set_clock_latency与insertion_delay

当1ns clock latency设置在capture上,在report_timing报告中体现在other end arrival time以及capture clock path的Arrival Time上。因为-1ns的insertion delay存在,所以skew group报告中显示的Arrival (ns)是减1ns的结果,即1.819-1=0.819 ns。CTS阶段create_ccopt_clock_tree_spec之后,spec中会产生对应的insertion_delay命令。

m0_61544122的博客 1621

基于Python的链家与贝壳租房数据爬取及城市性价比分析

本文通过Python爬虫技术,实现对链家和贝壳平台全国主要城市租房数据的采集与分析。研究使用requestsSelenium和Playwright等现代化爬虫工具,结合代理IP和验证码识别技术应对反爬机制。采集的数据经过清洗后,从多维度分析不同城市租房市场的价格分布、面积特征和性价比差异,并使用可视化技术展示分析结果。本研究为租房者提供决策参考,也为租房市场研究提供数据支撑。关键词:Python爬虫;租房数据;数据分析;链家;贝壳。

2201_76125261的博客 530

概率的接力:拆解大模型“预测下一个词“的底层逻辑

大模型的智能不在于它拥有了意识,而在于它用纯数学的架构,将人类语言的复杂结构压缩为可计算的向量轨迹与概率接力。当我们不再将其拟人化为"思考者",而是视作高维条件概率引擎时,才能真正驾驭它。预测下一个词,从来不是终点,而是起点。未来的核心竞争力,属于那些能洞察其统计本质、善用其模式生成能力,并以人类理性与事实为锚点的协作者。词元的轨迹终会止步于上下文窗口,但对技术底层的清醒认知,才是跨越幻觉、走向真实智能的基石。

AI浩 331

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

上一篇: 洛谷P1062(数列)
下一篇: 区间动态规划(模板:石子合并)
MaplePlane
博客等级 码龄7年 9粉丝 21原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值