【洛谷题解/AcWing题解/NOIP2006提高组】P1064/AcWing481 金明的预算方案

联想拯救者r7000p在ubuntu20.04未找到wifi适配器,安装rtl8852ae网卡驱动问题解决方案 新买的拯救者r7000p 2021款,装完ubuntu20.04之后显示未找到wifi适配器, 更换N次源之后还是只有一个显卡驱动,在网上找了很多方法,再自己折腾了一段时间后,总算是解决了这个问题。 1.设置bios 打开主板系统,将security boot设置为disenable,因为设计到修改内核配置,必须得关掉安全启动。 2.查询网卡状态 使用命令查询网卡(hardware of Internet)状态 lshw -C network 因为是双系统,在Windows下控制面板-设备管理器中可以 阅读详情

原题链接:https://www.luogu.com.cn/problem/P1064
难度:普及+/提高
涉及知识点:分组背包,有依赖的背包问题,动态规划

金明的预算方案一题是“有依赖的背包问题”的始祖,正因为有了这题才有了它。

有依赖的背包问题

如果读者是较早看到这篇博文的,那么我可能还没有放我的学习笔记,当然笔者会尽快地更新。

题意分析

给定 m m m 组物品,每组物品包括主件和附件,选择了某个附件必须选择其所依附的主件,求在不超过给定的限制代价 m m m 下选择出来的最大价值。这就是极典型的有依赖的背包问题。

分析与解决

此题难在难在数据处理,考虑用 p a i r < i n t , i n t > pair<int, int> pair<int,int> 存储所有主件的信息,用 v e c t o r vector vector 存储每个主件的附件信息。
然后我们思考如何解决问题。可以这样思考,因为选择了某组物品的某个附件那就必须选择它的主件,附件选择的个数是自由决定的,那么我们就可以用 1 个主件和若干个附件组合起来,搭配成一个物品,这样,每组物品中就存在可以直接选择的若干物品了,我们只需要选择其中一种搭配就行了。显而易见的,有依赖的背包问题就被我们转化成了分组背包问题。
这里有个问题,每组有多少个搭配呢?我们可以转化为树形结构来直观计算,以下图为例: 树形结构图
分类讨论一下:

  • 如果选 0 个,那么搭配的数量为 C 3 0 = 1 C_3^0 = 1 C30​=1.
  • 如果选 1 个,那么搭配的数量为 C 3 1 = 3 C_3^1 = 3 C31​=3.
  • 如果选 2 个,那么搭配的数量为 C 3 2 = 3 C_3^2 = 3 C32​=3.
  • 如果选 3 个,那么搭配的数量为 C 3 3 = 1 C_3^3 = 1 C33​=1.
    加起来的总数为8,也就是 2 3 2^3 23 ,有没有发现,如果令某个主件的附件有 k k k 个,那么能够搭配出来的方案数就是 2 k 2^k 2k,用 v e c t o r vector vector 存附件也是因为便于得到附件个数。其实这就是搭配方案数的一个数学性质。有什么用呢,在枚举决策时用的,当然在枚举决策时会减去1,因为选0个是没有意义的。

既然转化为了分组背包问题,那么就要讨论一下处理好数据后的核心部分了。我们都知道分组背包问题分为枚举物品、代价、决策三部分。

  • 对于物品层,我们自然是针对主件讨论的,枚举到某个主件时,如果这个主件的代价为 0,那么它的价值也应该是 0,这个主件就是没有意义的,可以直接跳过。
  • 对于代价层,按照常规的从大到小即可。
  • 对于决策层,令某个主件的附件个数为 s v sv sv,从 0 0 0 枚举到 1 < < s v − 1 1 << sv - 1 1<<sv−1。先提前把主件的代价和价值提出来,然后枚举每一个附件,对于一个附件下标 u u u,如果在当前决策 k k k 的二进制状态下的第 u u u 位为 0,则需要选择,即 k >> u & 1。需要选择的附件就把这个它的代价和价值都累加到先前准备的主件的代价和价值上。在全部附件枚举完成后,再进行状态转移,状态转移的方程为
  • f [ j ] = max ⁡ ( f [ j ] , f [ j − v ] + w ) f[j] =\max(f[j],f[j-v]+w) f[j]=max(f[j],f[j−v]+w)
    完毕。

AC代码

#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

typedef pair<int, int> PII;

#define v first
#define w second

const int N = 3e5;

int n, m;
PII master[N];
vector<PII> servant[N];
int f[N];

int main()
{
    cin >> m >> n;
    for (int i = 1; i <= n; i++)
    {
        int v, w, q;
        cin >> v >> w >> q;
        if (!q) master[i] = {v, v * w};
        else servant[q].push_back({v, v * w});
    }
    
    for (int i = 1; i <= n; i++) //枚举物品
    {
        if (master[i].v)
        {
            for (int j = m; j >= 0; j--)
            {
                auto &sv = servant[i];
                for (int k = 0; k < 1 << sv.size(); k++)
                {
                    int v = master[i].v, w = master[i].w;
                    for (int u = 0; u < sv.size(); u++)
                    {
                        if (k >> u & 1)
                        {
                            v += sv[u].v;
                            w += sv[u].w;
                        }
                    }
                    if (j >= v) f[j] = max(f[j], f[j - v] + w);
                }
            }
        }
    }
    
    cout << f[m];
    
    return 0;
}
告别电压瓶颈:手把手教你用SVPWM过调制算法提升电机驱动性能(附Simulink仿真) 本文详细介绍了如何利用SVPWM过调制算法提升电机驱动性能,解决电动汽车高速运行时的电压瓶颈问题。通过过调制I区和II区的算法实现细节,包括相角补偿与跳变控制,结合Simulink仿真演示,帮助工程师和研究者平衡电压增益与谐波失真,提升系统效率与动态响应。 阅读详情

相关推荐

从安装到出图:一份给振动测试新手的LMS Test.Lab 2021完整避坑手册(含许可证更新和常见弹窗解决)

本文为振动测试新手提供LMS Test.Lab 2021的完整使用指南,涵盖安装配置、许可证更新、数据采集到频域后处理的全流程。特别针对常见弹窗错误提供解决方案,并详细讲解Colormap时频图分析技巧,帮助用户快速掌握振动数据分析核心技能。

weixin_29268331的博客 987

洛谷P3613题解

数据结构,vector函数使用

qwer0408的博客 1027

汽车级智能栅极驱动器深度解析 | 连载03:功能框图与工作模式详解

在前两期连载中,我们分析了DRV871x-Q1的产品架构、引脚配置和电气特性。本期我们将深入探讨DRV871x-Q1的功能框图和工作模式,这是理解芯片内部工作机制的关键。通过分析功能框图,我们能够清晰地了解各功能模块之间的关系和信号流向;通过工作模式分析,我们能够掌握芯片在不同应用场景下的配置方法。这些知识对于系统设计和故障排查都至关重要。

VehSwHwDeveloper的博客 1103

vector有必要会吗?你真的会用吗?通过一道题来看看~

咳咳,来看下面。

yudui666的博客 192

程序员实战:DINOv3 权重文件下载与本地化部署全流程指南

Meta开源的DINOv3视觉大模型凭借70亿参数和17亿图像训练,在语义分割、目标检测等任务表现优异。本文详解预训练权重的获取渠道、校验方法和加载实践。开发者可通过HuggingFace或GitHub获取不同版本权重,包括针对服务器端的ViT系列和边缘设备的ConvNeXt系列。文章提供MD5校验代码确保文件完整性,并给出PyTorch和Transformers两种加载方式。特别强调7B模型需16GB GPU内存,建议根据硬件条件选择合适版本,如边缘设备使用ConvNeXt-Tiny。最后指出DINOv3

xiugou3365的博客 5910

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3978

洛谷 P1113 杂务(vector)

题目传送门 解题思路: 本题说有些杂务是有前提条件的,而有一个特性就是某个杂务的前提一定在这个杂务前面输入,那么,这个题就瞬间沦为了黄题.对于那些有前提条件的杂务,我们只需要找它的前提条件中最晚完成的那个加上自己的时间就是这个杂务最早完成的时间.再在全部杂务中找最晚的那个,就是答案. AC代码: 1 #include<cstdio> 2 #include&l...

anshuo0835的博客 455

别再死记硬背MAML原理了!用PyTorch手撸一个Omniglot小样本分类器(附完整代码)

本文详细介绍了如何使用PyTorch实现MAML(模型无关的元学习)算法,构建一个Omniglot小样本分类器。通过实战代码演示,帮助读者理解MAML的双层优化原理,并提供了完整的训练循环、网络架构设计及调试技巧,适合想要掌握元学习技术的开发者。

weixin_29191669的博客 131

[记忆化搜索] 洛谷P1141

题目 题目链接:https://www.luogu.com.cn/problem/P1141 思路 01迷宫里,在一片区域内的点能够到的最多的路径是相同的。 用f来记录这一片点最多的步数 ans记录答案 代码 #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #...

kosf_的博客 281

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

告别Vivado自带编辑器!手把手教你用Sublime Text 4 + Icarus Verilog搭建FPGA开发环境(Windows 10/11)

本文详细介绍如何在Windows 10/11系统下,使用Sublime Text 4和Icarus Verilog搭建高效的FPGA开发环境,替代Vivado自带编辑器。通过配置语法检查、代码高亮和智能补全等功能,提升Verilog开发效率,实现专业级工作流。

weixin_30684743的博客 428

洛谷 P1064 [NOIP2006 T2] 金明的预算方案

有依赖的背包问题

依然一笑作春温。 1353

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

【WorkBuddy专栏68】HY3绕路部署vsDS4直击根因——一次真实踩坑揭露两个AI模型的推理差距

AI人人懂 564

洛谷动态规划训练(5):P1064 金明的预算方案 有附件的背包问题

P1064 金明的预算方案 有附件的背包问题 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描...

qq_35299223的博客 320

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【洛谷】P1064 金明的预算方案

题目地址: https://www.luogu.com.cn/problem/P1064 题目描述: 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过nnn元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作

数学、算法爱好者的博客 1314

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

2018.11.09【NOIP2006】【洛谷P1064】金明的预算方案(有依赖的背包问题)

传送门 解析: 首先我并没有读完题。。我也没有管什么只有两个依赖,,我直接写的最裸的单层依赖的背包问题。。。(其实依赖下面套分组还比这个要恶心)。 思路: 由于我们直接枚举所有策略,对于一个物品集合是O(2∣S∣)O(2^{|S|})O(2∣S∣)的,所以我们可以先在集合内部做一次010101背包,注意,为了减小最终的物品个数,可以使用恰...

anlongyi8087的博客 195

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[洛谷]P1064 金明的预算方案 (#背包dp)

题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工...

A.pro的博客 333

洛谷习题P1540——使用vector容器

//使用vector容器 //由于可以查找容器中的元素,所以比queue更方便 #include<bits/stdc++.h> using namespace std; int main(){ int M,N,text,cnt=0; cin>>M>>N; vector<int> key; for(int i=0;i<N;i++){ ...

一入代码深似海 888

2019.09.16 日常总结兼洛谷P1064题解

洛谷P1064P1064P1064: 【题意】: 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜...

ZHUYINGYE_123456的博客 321

【题解】洛谷P1064[NOIP2006]金明的预算方案 有依赖的背包问题

题目链接 我们把附件和它的主件归到一组,其中主件为每组第一项编号为0。因为每组最多两个附件,对于每一组,决策有以下五种(假定存在两个附件): 1.不取这组 2.只取主件 3.取主件和附件1 4.取主件和附件2 5.取主件和附件1附件2 设 F[i,j]F[i,j]F[i,j] 表示考虑到第 iii 组容量为 jjj 时的最大价值 状态转移方程(假定存在两个附件) F[i,j]=max⁡{F[...

翻过这座山,他们就会听到你的故事 332

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 262

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 324

把 KV Cache 压到 FP4:BitDecoding-FP4 的算法-系统协同设计复盘

长上下文推理卡在KV Cache的显存与带宽上,而现有FP4方案要么精度崩、要么速度废。这篇文章复盘BitDecoding-FP4如何用三个算法补丁加一个系统重构,在B300上把服务吞吐提升2.4–3.0倍,精度几乎不掉。

helloagent的博客 305

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 598

优选算法:分治-归并排序

交易逆序对的总数

Wangshijie1015的博客 143

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 23
上一篇: 【洛谷题解】P2066 机器分配
下一篇: 【AcWing题解/Google Kickstart2019 Round B Problem B】能量石
oier_Asad.Chen
博客等级 码龄7年 15粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oier_Asad.Chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值