P5909 挂缀pendant 题解

news/2026/1/27 8:59:24/文章来源:https://www.cnblogs.com/Yuriha/p/19536499

P5909 挂缀pendant 题解

是一道经典的反悔贪心题(不太理解反悔贪心可以先看文章末尾),可以学到一个证明方法,更模板的题:P4053 建筑抢修。

题意简述

给定 \(n\) 个珠缀,并且每个限定 \(c\)\(w\) 表示珠缀的称重能力与重量。

每个珠缀能承受的重量是其下方所有珠缀的总和,不包括自己,求最长可以挂多长的珠缀,与最小总重量。

思考过程

首先我们发现,如果是正向模拟(从第一个依次往下挂),每挂一个就要去维护以上的所有信息,肯定是 \(O(n^2)\) 时间的,所以我们正难则反,考虑一下从末尾向上挂,发现可以。

之后看出来这个是一种类似 “带截止时间的任务选择问题” ,与建筑抢修很像,所以考虑用反悔贪心。

这道题不一样的点在哪呢,在于对每一项的排序,因为这个挂缀的限制是对于不包含自己的下方总重量的限制,所以我们需要考虑什么情况是更优的。

我们去设想一种最优情况,挂了 \(i+1\) 再挂 \(i\) 可以,挂了 \(i\) 不能挂 \(i+1\) ,所以列出式子:

\[SUM+W_i\ge C_{i+1} \]

表示之前的 \(sum\) 加上新的挂缀 \(w_i\) 是要比第 \(i+1\) 个的重量限制要大的。

\[SUM+W_{i+1}< C_{i} \]

表示之前的 \(sum\) 加上新的挂缀 \(w_{i+1}\) 是要比第 \(i\) 个的重量限制小的。

变形得到:

\[C_{i+1}-W_i\le SUM < C_i-W_{i+1}\\ C_{i+1}-W_i\le C_i-W_{i+1}\\ C_{i+1}+W_{i+1} < C_i+W_i \]

也就是说,最优情况是在 \(C_{i+1}+W_{i+1} < C_i+W_i\) 时成立,所以我们证明到,需要按照 \(C+W\) 的大小作为权值去进行排序。

然后对于反悔贪心的部分,我们去定义一个动态维护当下总重量的变量,如果其满足即将进来的新珠子的 \(C\) 的要求,就可以直接加入并且放入队列,否则我们就需要去从优先队列里寻找最大的一个数,去与这个新珠子做比较,然后抉择放入哪个,如果队列中的大,就去替换(因为前面的所有珠子不会因为重量变小而导致超重,并且这样可以使总重量变小,所以这是一个合法贪心)。

代码

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 1e5*2+100;
int n;
struct node {ll c, w;
}s[N];
//通过证明需要由w+c作为排序标准
bool cmp(node a, node b) {return a.w+a.c<b.w+b.c;
}
//这个队列用来记录被选进来的重量
priority_queue<int> q;
int main() {cin>>n;for (int i=1; i<=n; i++) {cin>>s[i].c>>s[i].w;}sort(s+1,s+1+n,cmp);//发现如果正的从上往下去吊会用n^2,正难则反,尝试从末尾往回去吊ll sum=0, L=0;for (int i=1; i<=n; i++) {//如果之前的sum符合当下的限制,就可以直接加入新珠子if (sum<=s[i].c) {L++;sum+=s[i].w;q.push(s[i].w);}else {//否则我们需要去看一下以前加入的最重的珠子,看看能否替换if (q.top()>s[i].w) {sum-=q.top();//总重量减去之前的最大q.pop();q.push(s[i].w);sum+=s[i].w;//加入现在最大的}}}cout<<L<<'\n'<<sum;return 0;
}

关于反悔贪心

反悔贪心,字面意思就是可以反悔的贪心,也就是在遇见一个更优的选项,我们会去反悔之前的某个选项。

这道题我们使用优先队列去记录选择了的珠子的重量,在遇见一个新的珠子的时候,我们就可以去看一下之前选的最劣的与现在选的这个哪个更优,然后就可以去做反悔操作。

有一个比较形象的比喻:反悔贪心就是在吃自助餐,先去把所有能吃的吃了,在吃撑的时候,吐出来一个价值最低的食物,吃价值更高的食物(大卫·戴 [edge] )。

结语

首先我们可以学习到反悔贪心的思想,然后还学会了一种贪心的证明方法:通过假设一个最优可能,去看一下最优策略之间选项的关系,然后可以选择排序规则。

喜欢点个赞吧,这是我的第一篇题解,谢谢(*^▽^*)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年比较好的轨道式接线端子/弹簧式接线端子热门品牌厂家推荐

在电气连接领域,轨道式接线端子和弹簧式接线端子的选择直接影响设备的安全性和可靠性。本文基于产品性能、技术创新、市场反馈及供应链稳定性四个维度,筛选出2026年值得关注的五家优质厂商。其中,慈溪柯发电子有限公…

nodejs基于农产品网上商城农商信息交流平台小程序

目录项目背景技术架构核心功能创新点应用价值项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作项目背景 农产品网上商城与农商信息交流平台小程序结合了电子商务与农业信息共享需求&#xff0c;旨在解决传统…

2026年评价高的双排接线端子/高效接线端子厂家选择参考建议

在电气连接领域,选择优质的双排接线端子/高效接线端子供应商需要综合考虑技术实力、生产工艺、产品稳定性及服务响应能力。经过对国内30余家专业厂商的实地考察与技术参数对比,我们建议优先关注具备垂直制造体系、拥…

2026年质量好的直线光轴/光轴厂家选购参考建议

在选购直线光轴/光轴时,质量、供货稳定性、技术实力和售后服务是核心考量因素。优质的直线光轴应具备高精度、耐磨性、抗腐蚀性以及长期使用的稳定性,而可靠的供应商则需具备成熟的生产工艺、严格的质量管控体系以及…

Linux系统用户组的管理

1、增加一个新的用户组使用groupadd命令。其格式如下: groupadd 选项 用户组 可以使用的选项有:-g GID 指定新用户组的组标识号(GID)。 -o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同…

2026年,新的开始吧,股票量化交易学起来(一)

最近感觉股票的量化交易有三个阶段 1. 第一阶段:指标自动化 就是你的MACD金叉死叉,5日10日20日均线集体上抬,出现这样的指标就自动进行买入。出现空头信号就自动卖出2. 第二阶段(国外量化基金的主流手法):构建al…

2026年靠谱的42crmo圆钢/45#钢圆钢人气实力厂商推荐

在钢材加工行业,选择可靠的42crmo圆钢和45钢圆钢供应商至关重要。本文基于企业技术积淀、产品质量稳定性、供货能力、客户服务响应速度及行业口碑等核心维度,筛选出5家值得关注的厂商。其中,无锡国宾轴承有限公司凭…

基于 C# 和 Nuke 打造现代化构建系统的最佳实践

告别脚本地狱:为什么我们选择用 C# 打造现代化构建系统揭秘 HagiCode 项目如何利用 Nuke 实现类型安全、跨平台且高度可扩展的自动化构建流程,彻底解决传统构建脚本的维护痛点。背景 在软件开发的漫长旅途中,"…

工程设计类学习(DAY9):印刷电路板(PCB)材料选择、工艺特性与制造技术综合详解

摘要 印刷电路板作为现代电子产品的核心载体&#xff0c;其材料的选择、结构的设计以及制造工艺的精细程度直接决定了电子产品的性能、可靠性及使用寿命。本文将深入探讨 PCB 基材的本质&#xff0c;特别是关于 FR-4 等级的误解与正解&#xff1b;详细分析表面组装技术&#xf…

贾子理论及智慧公理研究:跨学科视域下AI智慧涌现的判定体系与哲学推演

贾子理论及智慧公理研究&#xff1a;跨学科视域下AI智慧涌现的判定体系与哲学推演摘要&#xff1a;本文系统梳理了由贾龙栋&#xff08;Kucius Teng&#xff09;提出的贾子理论及其核心衍生成果——贾子智慧公理。该理论立足东方哲学&#xff0c;融合现代科技&#xff0c;构建了…

金融服务公司如何大规模构建上下文智能

作者&#xff1a;来自 Elastic Karen Mcdermott 从数据访问到数据普及。 麦肯锡对数据普及的愿景标志着企业对数据思考方式的微妙但深远的转变。到 2030 年&#xff0c;成功不再来源于为员工提供更好的仪表板或更复杂的分析工具&#xff0c;而在于将智能直接嵌入系统、工作流和…

128页PPT | XX城建集团以成本为主线构建企业级项目管理系统

很多施工集团变大后&#xff0c;项目散在全国。成本靠 Excel 和群消息&#xff0c;数据慢、错、漏。领导看不到真数&#xff0c;付款超结、项目亏钱后才知道。公司天天救火&#xff0c;利润被吃掉。方案介绍这套方案把“成本”做成一条主线。项目从投标到竣工&#xff0c;所有花…

179页满分PPT | 某大型车企数字化工厂规划蓝图设计方案

大部分车企造新车时&#xff0c;工艺、计划、生产、物流、采购、质量六条线各跑各的&#xff0c;数据靠纸&#xff0c;设备靠喊&#xff0c;换车型要改一堆表&#xff0c;换物料要录一堆单&#xff0c;问题出了找不到根因&#xff0c;交付慢了找不到堵点&#xff0c;成本高了找…

HarmonyOS 超级终端与服务卡片创建:打造无缝多设备交互体验

HarmonyOS 超级终端与服务卡片创建:打造无缝多设备交互体验pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

【含文档+PPT+源码】基于大数据的交通流量预测系统

项目介绍 本课程演示的是一款基于大数据的交通流量预测系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 带你从零开始部署运行本套系统 该项目附带的源码…

2026年比较好的企业瓶装水定制水/哇哈哈定制水供应稳定性排行

行业背景与市场趋势随着健康饮水意识的提升和企业品牌营销需求的增加,企业定制瓶装水市场在2026年迎来了新一轮增长。根据行业报告显示,中国定制水市场规模已突破200亿元,年增长率保持在15%以上。企业定制水不仅满足…

2026年比较好的深圳送水桶装水配送/景田深圳送水长期合作推荐榜

行业背景与市场趋势随着深圳城市化进程的加快和居民健康意识的提升,桶装水市场近年来呈现稳定增长态势。据深圳市统计局数据显示,2025年深圳桶装水市场规模已达15亿元,年均增长率保持在8%左右。在快节奏的都市生活中…

semi-sync原主库加入集群阻塞问题分析

问题现象 客户在一个一主两从的半同步复制环境下做了手工切换,然后尝试把原主库加入集群中,结果发现新集群中的数据一直无法同步到slave(原主库)中来,查看slave(原主库)同步状态,IO线程和SQL线程都是YES状态,…

VMware Workstation 17 Pro 破解版下载及安装使用教程

VMware Workstation Pro 17是一款提供给专业技术人员们使用的电脑系统虚拟机工具,这款软件能够帮助我们的用户快速创建一个甚至多个不同的虚拟系统。 VMware Workstation Pro 17可以支持Mac、Linux、Windows10、Windo…

2026年比较好的WCB微型齿轮油泵/YCB齿轮油泵厂家选择参考建议

在工业泵领域选择优质供应商时,建议从产品技术成熟度、行业应用经验、定制化能力以及售后服务四个维度进行综合评估。根据市场调研和行业反馈,泊头市恒阳泵阀有限公司凭借其完整的产品线、专业的技术团队和稳定的产品…