常见贪心问题详解

news2024/11/29 0:29:48

目录

贪心算法应用条件

常见贪心问题

活动安排问题(区间调度问题)

区间覆盖问题

最优装载问题1

最优装载问题2

多机调度问题

例题:翻硬币

例题:快乐司机

例题:防御力

例题:答疑

贪心算法应用条件

1.贪心选择性质:贪心选择性质是指通过局部最优的选择,可以构造出全局最优解。换句话说,一个问题的最优解可以通过一系列局部最优解的选择得到,这些局部最优解最终叠加起来形成全局最优解,贪心算法的每一步都遵循贪心选择性质,即每一步都做出当前看起来最优的选择。

2.最优子结构:最优子结构是指问题的最优解包含子问题的最优解,这意味着可以通过组合子问题的最优解来构造原问题的最优解,动态规划算法依赖于最优子结构性质,但贪心算法也可以利用这一点,尤其是在子问题相互独立的情况下。

3.无后效性:无后效性是指一个问题的状态一旦确定,就不受这个状态之前决策的影响。在贪心算法中,这意味一旦做出选择,这个选择就不会影响未来步骤中的选择,无后效性保证了贪心算法的每一步都是独立的,可以单独考虑,而不需要考虑之前的步骤。

常见贪心问题

活动安排问题(区间调度问题)

有很多电视节目,给出他们的起止时间,有些节目时间冲突。问能完整看完的电视节目最多有多少

解题的关键在于选择什么贪心策略,才能安排尽可能多的活动。由于活动有开始时间和终止时间,一个尽快终止的活动,可以容纳更多的后续活动,所以这个贪心策略为按照最早结束时间排序。

区间覆盖问题

给定一个长度为n的区间,再给出m条线段的左端点和右端点。问最少用多少条线段可以将整个空间完全覆盖

贪心策略:尽量找出更长的线段。把每条线段按照左端点递增排序,设已经覆盖的区间是[L,R],在剩下的线段中,找所有左端点小于等于R,且右端点最大的线段,把这个线段加入到已覆盖区间里,并更新已覆盖区间的[L,R]值。重复该步骤,直到区间全部覆盖。

最优装载问题1

有n种药水,体积都是V,浓度不同。把它们混合起来,得到浓度不大于w%的药水,问怎们混合,才能得到最大体积的药水?注意一种药水要么全用,要么都不用,不能只取一部分。

贪心策略:尽量找浓度小的药水。先对药水按浓度从小到大排序,药水的浓度不大于w%就加入,如果药水的浓度大于w%,计算混合后总浓度,不大于w%就加入,否则结束判断。

最优装载问题2

有n种药水,体积不同,浓度不同。把它们混合起来,得到浓度不大于w%的药水,问怎么混合,才能得到最大体积的药水?注意一种药水可以只取一部分。

贪心策略:尽量找浓度小的药水。先对药水浓度从小到大排序,药水的浓度不大于w%就加入,如果药水的浓度大于w%,计算混合后总浓度,不大于w%就加入,加不完可以加一部分,否则结束判断。

多机调度问题

有n个独立的作业,由m台相同的机器进行加工。作业i的处理时间为ti,每个作业可在任何一台机器上加工处理,但不能间断、拆分。要求给出一种作业调度方案,在尽可能短的时间内,由m台机器加工处理完成这n个作业。

贪心策略:最长处理时间的作业优先,即把处理时间最长的作业分配给最先空闲的机器。让处理时间长的作业得到优先处理,从而在整体上获得尽可能短的处理时间。

例题:翻硬币

针对这个题目,可以一次一次尝试,发现有解的条件,初始字符串s和目标字符串t必定有偶数个字符不同。贪心操作,从头开始遍历字符串,遇到不同的字符就翻动,直到最后一个字符。

例题:快乐司机

针对这个题目,可以思考题目中有的数据怎么样排序能够得到最优的答案,可以发现,按照单价从大到小排序可以得到最优的答案。

例题:防御力

 

针对这个题目,也是分析题目中拥有的数据的各种排序,发现只增加A或B与道具的顺序没有关系。交替增加A和B,发现A使得B增加快,越大的A对B越有利,A的道具从小打到,后面更大的A更有利于B。B使A增加慢,B的道具从大到小,前面更大的B对A影响小。

例题:答疑

 对这个题目进行分析,对题目中的数据进行排序可以发现,当按照每个人三者的总时间和从小到大的顺序排序时得到的为最优解。

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

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

相关文章

【通信原理笔记】【三】模拟信号调制——3.1 模拟信号调制基本模型与思路

文章目录 前言一、模拟信号二、模拟调制系统模型三、模拟调制的三种方式四、调制的评价指标总结 前言 一般常见的信号的频带均集中在基带附近,如果要通过无线地方式传输,其较长的波长需要大型的天线才能传输,难以实现。另一方面基带的带宽资…

ruoyi-nbcio-plus基于vue3的flowable执行监听器的升级修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

Linux基础命令篇之——压缩与解压(tar、gzip、bzip2、zip和unzip)

linux基础命令——解压与压缩 以下是关于Linux命令tar、gzip、bzip2、zip和unzip的详细介绍: 1. tar 这个是Linux用的最多的解压缩命令 tar是Linux系统中用于创建和处理归档文件的命令。归档文件是一个包含多个文件和/或目录的单一文件。常与压缩命令gzip或bzip2结…

图像处理_积分图

目录 1. 积分图算法介绍 2. 基本原理 2.1 构建积分图 2.2 使用积分图 3. 举个例子 1. 积分图算法介绍 积分图算法是图像处理中的经典算法之一,由Crow在1984年首次提出,它是为了在多尺度透视投影中提高渲染速度。 积分图算法是一种快速计算图像区域和…

wavedec2函数及使用

在MATLAB中,进行小波分解及其逆运算是处理图像的一种常见方法,尤其适用于图像分析、压缩和去噪等场景。wavedec2函数可以对二维信号(例如图像)进行多级小波分解,而waverec2函数则用于进行相应的逆运算。以下是如何使用…

非NVIDIA平台下的CUDA的替代方案OpenCL,第一步如何获取PlatformInfo、DeviceInfo

非NVIDIA平台下的CUDA的替代方案OpenCL,第一步如何获取PlatformInfo、DeviceInfo 介绍 当谈到高性能计算,NVIDIA的CUDA框架无疑是一个强大的工具。OpenC(Open Computing Language)是一个更为通用的解决方案,或者你使用…

java 跳转搜索(Jump Search)

与二分搜索一样,跳转搜索是一种针对排序数组的搜索算法。基本思想是通过按固定步骤向前跳跃或跳过某些元素来代替搜索所有元素来检查更少的元素(比线性搜索)。例如,假设我们有一个大小为 n 的数组 arr[] 和一个大小为 m 的块&…

隐私计算实训营学习六:隐语PIR介绍及开发指南

文章目录 一、隐语实现的PIR总体介绍1.1 PIR的定义和种类1.2 隐语PIR功能分层 二、Index PIR-SealPIR介绍三、Keyword PIR- Labeled PSI介绍四、隐语PIR后续计划 一、隐语实现的PIR总体介绍 1.1 PIR的定义和种类 PIR(Private Information Retrieval PIR)隐匿查询:…

比亚迪的薪资。。。当年的迪子,今年的迪爹……

大家好,我是小黄。 俗话说金3银4,比亚迪一直都是一个相对热门的公司,“去年迪子,今年迪爹,去年座位空一大半,今年走廊都站满人……”这是很多应届毕业生对比亚迪的评价。 当年小黄毕业的时候,…

[计算机效率] 文件加密工具:Lockdir

3.11 文件加密工具:Lockdir Lockdir是一款安全性高、使用简单、体积极小的便携式文件夹加密器,无需安装,一键加密,一键解密,加密算法高,是优秀的加密工具。其主要特点包括: 加密操作简易&#…

hadoop-3.1.1分布式搭建与常用命令

一、准备工作 1.首先需要三台虚拟机: master 、 node1 、 node2 2.时间同步 ntpdate ntp.aliyun.com 3.调整时区 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 4.jdk1.8 java -version 5.修改主机名 三台分别执行 vim /etc/hostname 并将内容指定为…

酷开会员丨看、学、用、玩的智慧电视,酷开系统享你所想!

在数字化浪潮席卷之下,电视这个曾作为家庭娱乐设备中心的“客厅霸主”,在现代家庭中的地位似乎变得模糊起来。随着时代的发展,人们不再仅仅满足于电视观看节目的单一功能,而是期待电视能够提供更多元化、更智能的交互体验。考虑到…

[leetcode] 100. 相同的树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 2&a…

cookie介绍

文章目录 1.cookie是什么?2.cookie的存储位置3.什么是无状态问题,以及如何解决 4.存储在客户端的好处5.cookie的主要特点6.cookie的缺点7.cookie的产生过程8.cookie的使用步骤1.安装依赖2.引入依赖3.在中间件注册 9.cookie代码示例10.cookie的有效期 1.c…

电子级高纯PFA材质实验室器皿耗材PFA漏斗PFA试剂瓶PFA烧杯

PFA三角漏斗,整体均是PFA材质,无污染风险,可高压灭菌。 尺寸:外径40mm、160mm PFA三角漏斗 特点: 1、一体式成型,结构稳定; 2、化学耐受性强,耐受强酸、强碱以及各种有机溶剂&…

上位机图像处理和嵌入式模块部署(qmacvisual寻找圆和寻找直线)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面有几篇文章,我们谈到过直线拟合、圆拟合和椭圆拟合。当时,我们的做法是,先找到了轮廓,接着找到…

数据资产如何入表?有哪些步骤?

当下,数据资产入表这一关键环节对于企业的高效运营与决策制定具有至关重要的作用。软信天成团队经过长期研究与实践,将数据资产入表的全流程归纳总结为四个核心步骤,以期为诸位提供帮忙。 (一)确保数据合规&#xff0…

8.均值滤波

1 简介 均值滤波是一种低通滤波,它可以有效过滤图片中的椒盐噪声,但是副作用也同样明显,会使图片的边缘过于模糊。   均值滤波的卷积核系数均为1。   这里最终重复一下算法实现以及验证的步骤:     1.MATLAB读取图片并转化…

JVM实战之性能调优[2](线程转储案例认识和分析)

文章目录 版权声明案例1:CPU占用率高问题问题描述解决思路补充内容 案例2:接口响应时间长问题问题描述解决思路Arthas trace命令Arthas watch命令解决问题 案例3:定位偏底层性能问题问题描述解决思路:Arthas火焰图问题解决 案例4&…

高级DBA带你处理MySQL客户端程序频繁访问MYSQL数据库并错误链接不释放导致连接数爆满事故实战

高级DBA带你处理MySQL客户端程序频繁访问MYSQL数据库并错误链接不释放导致连接数爆满事故实战 一、生产事故描述 Mysql生产数据库最大连接数爆满,其余客户端也同样拿不到数据库连接,生产异常,数据传输失败! 报错如下&#xff1a…