反悔贪心专题

P2949 [USACO09OPEN] Work Scheduling G 题解 约翰有太多的工作要做。为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间。他的工作日从0时刻开始,有109个单位时间。在任一时刻,他都可以选择编号1到N的N1≤N≤105项工作中的任意一项工作来完成。因为他在每个单位时间里只能做一个工作,而每项工作又有一个截止日期,所以他很难有时间完成所有N个工作,虽然还是有可能。对于第i个工作,有一个截止时间Di​1≤Di​≤109,如果他可以完成这个工作,那么他可以获利Pi​1≤Pi​。 阅读详情

贪心反悔机

给定截止时间和价值,每个花费单位时间

约翰有太多的工作要做。为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间。 他的工作日从 0 时刻开始,有 10^9 个单位时间。在任一时刻,他都可以选择编号 1 到 N 的 N 项工作中的任意一项工作来完成。 因为他在每个单位时间里只能做一个工作,而每项工作又有一个截止日期,所以他很难有时间完成所有N个工作,虽然还是有可能。 对于第 i 个工作,有一个截止时间 Di,如果他可以完成这个工作,那么他可以获利Pi . 在给定的工作利润和截止时间下,约翰能够获得的利润最大为多少?

思路: 贪心返回,先按照截止时间升序排列,然后依次放入堆中,如果当前截止日期小于堆的数量,直接放入,若大于则替换掉最小的那个。

import heapq

n = int(input())
data = []
for i in range(n):
    a, b = map(int, input().split())
    data.append((a,b))
data.sort(key=lambda x: x[0])
stack = []
for item in data:
    if len(stack) < item[0]:
        heapq.heappush(stack, item[1])
    else:
        heapq.heappushpop(stack, item[1])
print(sum(stack))

价值一定模型(耗费时间/截止时间)

小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需要一定的时间。同时,修理工人修理完一个建筑才能修理下一个建筑,不能同时修理多个建筑。如果某个建筑在一段时间之内没有完全修理完毕,这个建筑就报废了。你的任务是帮小刚合理的制订一个修理顺序,以抢修尽可能多的建筑。

思路: 相似操作,先按照截止时间排序,然后依次入大顶堆,每次判定加上会不会超过截止时间,若不会直接入堆,若会,则把堆里耗时最大的出来替换掉。

import heapq

n = int(input())
data = []
for i in range(n):
    a, b = map(int, input().split())
    data.append((a,b))
data.sort(key=lambda x: x[1])
stack = []
s = 0
for item in data:
    if s + item[0] < item[1]:
        s += item[0]
        heapq.heappush(stack, - item[0])
    else:
        if stack[0] < -item[0]:
            s -= -item[0] - stack[0]
            heapq.heappushpop(stack, - item[0])
print(len(stack))
【反悔贪心】算法讲解 反悔贪心就是我们维护一个反悔堆,把想要反悔的放到堆中,然后不断贪心,如果发现可以反悔,那就反悔,基本就是这个思想。 阅读详情

相关推荐

反悔贪心学习笔记

贪心获得的局部最优解往往不是全局最优解,在我们需要全局最优解时,就要进行反悔操作。反悔贪心一般有两种实现方式 - 反悔堆和反悔自动机。反悔堆:按照某种顺序,依次考虑可能的决策,通过堆来维护当前最优解,如果遇到当前维护的解不是最优的时候,回退之前的某种决策并更新最优解。反悔自动机:设计一种反悔策略,使得任意一种贪心策略都可以到达最优解。一般是利用差值来实现自动更新最优解。

Sky390 的博客 1124

洛谷——P2949工作调度Work Scheduling

题目: 约翰有太多的工作要做。为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间。 他的工作日从0时刻开始,有109 个单位时间。在任一时刻,他都可以选择编号1~N的N(1 <= N <= 106)项工作中的任意一项工作来完成。 因为他在每个单位时间里只能做一个工作,而每项工作又有一个截止日期,所以他很难有时间完成所有N个工作,虽然还是有可能。 对于第i个工作,有一个截...

文轩 794

【Android】条形码/二维码扫描——ZXing源码分析

正在更新中 针对3.2.1版本源码 与其他版本代码可能会有出入,但核心思想基本不变。 首先从com.google.zxing.client.android包中的目录结构分析:Book:这个文件夹中有5个类: BrowseBookListener 实现了adapter的点击事项响应,通过获取ISBN,然后跳转到Google books中查询响应的详细信息。 SearchBookContents

年轻的学徒 2453

堆

堆分为小根堆和大根堆,为完全二叉树 小根堆是堆顶为最小的数,他的左右儿子都是要比他大,他的儿子们也可以构成一个小根堆 大根即为堆顶是最大的数,他的左右儿子都要比他小,他的儿子们也可以构成一个大根堆 可以看大佬博客:https://www.cnblogs.com/henry-1202/p/9307927.html 我们以洛谷3378为例 (小根堆) 题目描述 如题,初始小根堆为空,我们需...

唐大帅 406

TAS5805MPWPR实战:数字音频功放从选型到量产全流程指南

数字音频功放将I2S数字信号直接转为PWM驱动扬声器,省去传统DAC与模拟运放链路,在高保真、低BOM与紧凑PCB之间找到平衡。其核心在于内置可编程DSP,支持多段PEQ、DRC等数字处理,通过I2C配置即可完成调音,而不占用主控算力。这类方案广泛应用于蓝牙音箱、Soundbar、智能音频模组等产品,但实际落地时常遇到I2C通信不稳定、EQ未生效、底噪超标、DC检测误触发等工程问题。从电源布局、LC滤波参数到PurePath Console工具链的使用,再到量产固件加载与故障排查,都需要系统化方法论支撑。本

weixin_29164843的博客 220

VS Code配置Java开发环境避坑指南:从JDK到Spring Boot插件全流程

本文详细介绍了在VS Code中配置Java开发环境的完整流程,涵盖JDK选择、环境变量配置、核心插件安装、构建工具优化及Spring Boot项目专项设置。特别针对常见问题提供避坑方案,帮助开发者快速搭建高效稳定的开发环境,提升Java和Spring Boot开发效率。

weixin_28839699的博客 979

P2949 工作调度

题意翻译 约翰有太多的工作要做。为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间。 他的工作日从0时刻开始,有10^9个单位时间。在任一时刻,他都可以选择编号1~N的N(1 <= N <= 10^6)项工作中的任意一项工作来完成。 因为他在每个单位时间里只能做一个工作,而每项工作又有一个截止日期,所以他很难有时间完成所有N个工作,虽然还是有可能。 对于第i个工作,有一个...

qq_38472193的博客 643

基于ROS的室内移动机器人自主导航技术

随着机器人技术的发展,近些年来室内移动机器人的研究热度越来越高。本文主要利用ROS操作系统对室内移动机器人的建图定位与自主导航关键技术进行研究。 ROS是目前开发较为完整具有广阔应用前景的开源机器人操作系统,具有分布式、模块化、代码复用等优良特点。同时ROS还提供了许多开源库,在这些库的基础之上研究同时定位与地图构建和机器人自主导航技术可以节省大量时间。 ORB-SLAM2是比较优秀的视觉SLAM算法之一,它具有计算量比较小、能够实时运行等优点。在介绍ORB-SLAM2的框架之前,首先会介绍视觉SLAM的一

weixin_44553616的博客 1909

反悔贪心

1、什么是反悔贪心? 贪心本身是没有反悔操作的,贪心求的就是当前的最优解。但当前的最优解有可能是局部最优解,而不是全局最优解,这时候就要进行反悔操作。 另外的来自蒟蒻dalao的解释: 众所周知,正常的贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。也就是说我们的每一步都是站在当前产生的局面上所作出的最好的选择,是没有反悔操作的。 不加反悔的一直朝着当前局面的最优解走很可能导致我们被困在局部的最优解而无法到达...

Elics的博客 6012

【CANoe示例分析】0002_SOMEIPDemo

该工程由Vector官方提供,作为仿真SOME/IP节点的示例。Demo中介绍了两种仿真SOME/IP节点的方法,一种是基于arxml数据库的仿真,另一种是没有数据库(arxml、fibex)的仿真。无论是哪种形式的仿真,如果想要通过CAPL程序接收或者发送SOME/IP信息,都需要添加交互层的信息,这些信息可以通过添加DLL文件实现,DLL文件路径在CANoe安装目录下的Exec32文件中。

jasonj333 3518

昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子

【代码】昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子。

william_myq的博客 507

专题突破之反悔贪心——建筑抢修,Cow Coupons G, Voting (Hard Version),Cardboard Box

贪心真是用心出题,用脚造数据

412

MZI and MI Optical Waveguide(马赫曾德与迈克尔逊光波导)

注意,这里的 “镜子” 并不是真的在波导中做一个镜子出来,而是通过使用一个 1x2 的 MMI 结构将 MMI 输出的两个端口连接起来形成一个 “宽带镜子”。对于这里形成镜子的详细原理,后面有时间了我们再做更加详细地介绍。,它由一个 splitter 构成和两个仿佛带有 “镜子” 的臂组成。相比较于 MZI,光波可以在它的臂中传输,最终从进光口处出去得到相长或者相消干涉,很明显,在。)的折射率,从而使得两个臂上产生的相位差值不同,最终得到相长或者相消干涉的结果。这里,给大家介绍一下。,它更像是一个折叠的。

u011699626的博客 2450

贪心算法专题

反悔贪心的精髓就是,对于当前的最优解直接记录它对答案的贡献,而后续遇到更优解时只需要更新上一次最优解(因为堆自动排序了,所以更新只需要在O(1)的时间复杂度内完成)。毫无疑问,O(n²)的时间复杂度对于n

Antonio915的博客 1229

基于STM32设计的便携式心电信号监测系统_146

基于STM32 设计的便携式心电信号监测系统,采用 PulseSensor 心率传感器进行数据采集,通过 LCD 显示屏显示心电数字数据和采集状态。同时,该系统还采用 HC05 蓝牙模块将实时心电信号数据传输到手机 APP,用户可以在手机 APP 上实时查看采集的数据并绘制心率曲线。此外,STM32 上的按键可以控制心率采集状态,用户登录手机 APP 还可以查看实时心电信号折线图。

1万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

学习笔记 反悔贪心

一个小trick

Dawn的博客 2171

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【算法】反悔贪心 总结

本文是反悔贪心的总结

qq_35684989的博客 1329

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

反悔贪心 & 模拟费用流 学习笔记

很多找到一种可行的方案,匹配(选择)某些东西,使价值最优化的问题可以建出费用流模型。但是直接跑费用流的复杂度是不对的。我们又想到可以用简单的贪心思路解决这些问题,然而一般的贪心都假掉了。于是我们考虑模拟费用流的退流操作来做贪心,这就是反悔贪心,其实也是在模拟费用流的各种操作。所以说反悔贪心(可撤销贪心)和模拟费用流是一个东西。不过对于一道题目,我们可能会从费用流建模的角度入手。也可能从贪心的角度入手,在它之上加可撤销操作。这大概就是不同点,但最后的代码都是一样的。

deng_cheng_yu的博客 2485

反悔贪心 学习笔记

反悔贪心 学习笔记

glorious_dream的博客 2226

贪心&&贪心的反悔

本文介绍了贪心算法的基本概念与应用场景。贪心算法通过局部最优选择逐步构建全局最优解,适用于具有最优子结构且选择不影响后续决策的问题。文章通过找零钱、课程选择等示例说明贪心策略的适用性,并指出其局限性(如需要"反悔"机制的情况)。以洛谷P3620题为例,详细解析了带反悔功能的贪心算法实现:通过优先队列选择最小距离,同时计算"反悔值"(左右邻居距离和减当前值)来实现动态调整。这种设计允许算法在后续步骤中自动修正之前的选择,从而获得更优解。文章最后强调,当反悔值更优时会自然

weixin_67028876的博客 1026

【个人学习总结】反悔贪心:反悔堆+反悔自动机

反悔贪心,就是可以回溯的贪心,一般题目我们能使用正常贪心的情况是很少的,因为我们只考虑了局部最优解,我们不能保证局部最优解是最后的最优解,就像买股票,万一后面又涨了呢,那我肯定就要后悔了(总之,对于此类问题,我们将使用反悔贪心来解决。

qq_61422664的博客 1195

贪心算法拓展(反悔贪心)

相信大家对贪心算法已经见怪不怪了,但是一旦我们的决策条件会随着我们的步骤变化,我们该怎么办呢?有没有什么方法可以反悔呢?今天就来讲可以后悔的贪心算法,反悔贪心。

Qlarkstar的博客 1752

反悔贪心和例题

反悔贪心解释

2301_79717009的博客 1173

(贪心) 反悔贪心之反悔堆

准备一个池子,称作反悔池,池中缓存在遍历过程中不断遇到的可选项作为备用资源。 在后续的遍历中,当需要资源的时候,不断的从池中获取,直到满足要求。 基本的原则就如此。 当然这个池子中的值,可以是已经选择了的,也可以是未选择的。都是基于具体题意而言的。 池的数据结构也是基于题目而言比较多样,一般都是堆,栈,队列等可进可出的数据结构。

cuber-lotus的博客 1014
上一篇: 笔试题汇总
下一篇: Roberta
KazeHelloWorld
博客等级 码龄7年 0粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值