首页 > 编程语言 >蓝桥杯课程-贪心算法讲解

蓝桥杯课程-贪心算法讲解

时间:2024-06-18 16:46:28浏览次数:11  
标签:选择 策略 蓝桥 任务 讲解 区间 最优 贪心

1.区间调度问题

问题描述

在有限的区间范围内,选择完成最多的任务组合

解决策略

我们可以思考的策略有:
1.最早开始时间(begin)
2.最早结束时间(end)
3.用时最少(end - begin)

1.我们这里首先定方向:从区间最左端向右开始选择。
2.我们很容易想到的策略是选择用时最少的情况,但是试想如果有一个短任务刚好卡在两个任务中间,我们还是选择该任务,可能为了这一个任务舍弃了两个任务(证明贪心最优很难,证明非最优举反例即可)
3.其次我们考虑最早开始时间,如果有一个贯穿区间的长任务开始最早,那么是不是就不是最优了,排除
4.考虑最早结束时间,我们可以考虑奖励机制,每次选择一个任务得到的奖励分为:选择这个任务本身 使得结果count++ 与 剩余可选择的区间长度(len) 两个奖励;
我们很容易知道前者无论如何选择,一次选择一个奖励都是一样的; 但是对于后者来说,如果选择最早结束时间,我们剩余可选择的区间长度就会越长,在剩下的区间中选择到更多的任务组合可能性越多,就月可能选择到更优秀的组合,这也就是我们想要的贪心策略。

2.区间覆盖问题

问题描述

给定一个区间长度,选择最少的任务覆盖整个区间

解决策略

我们可以思考的策略有:
在任务开始时间早于区间剩余部分的开始时间基础上,选择
1.用时最长(end - begin)的
2.最晚结束时间

1.如果是选择用时最长的情况,有可能存在该任务与已覆盖区间高度重合的情况,导致其实提供的实际奖励(减去的区间剩余部分)实际不多,甚至少于其他组合
2.如果是选择最晚结束的,只要该任务头部能衔接上上一个任务结束位置,最晚结束时间的实际奖励是最多的,剩余的区间长度最短(由于每次我们选择任务是只要该任务开始时间早于上一个任务的结束时间,这里结束越晚,我们可以选择的任务组合越多,就越有可能选择到最优解)

3.最优装载问题

问题描述

药水浓度: (V1 * w1% + V2 * w2% + ...) / (V1 + V2 + ...) <= w%
V1 * w1% + V2 * w2% + ... <= w% * (V1 + V2 + ...)
我们希望(V1 + V2 + ...)越大越好,所以我们发现必然是选择尽可能小的 w_i%,这样就可以获得更大的体积

解决策略

这里如果我们选择使用浓度较大的药水,就会使药水浓度更快达到预定值,导致体积无法达到最优值

4.最优装载问题2

问题描述

注意这里药水可以只取部分!!!

解决策略

5.多机调度问题

问题描述

解决策略

可以考虑以下的贪心策略:
(1)最长处理时间作业优先的贪心选择策略。
(2)最短处理时间作业优先的贪心选择策略。
(3)作业到达时间优先的贪心选择策略。

很明显针对最短处理时间优先,会出现机子执行了长任务额同事,之前还执行过段任务,导致总耗时较长。
至于作业到达时间优先更不能保证重叠区域长度最大。
但是在最长处理时间优先中,我们可在机子处理长任务中让其他空余机子“抽空”处理较短任务,尽量增大重叠区域!!

是的,这题最优解的解题思路就是增加重叠区域的总长度(所有任务总耗时固定,实际耗时 = 总耗时 - 重叠部分(同时进行))
很明显,我们首先选择最长任务之后,其余任务都是短于该任务的,在选择其中最长的,也就是和该任务重叠区域长度最大的任务,
每一步都是增大重叠区域最大的选择(局部最优),达成总时间最短(全局最优,实际耗时 = 总耗时 - 重叠部分(同时进行))

标签:选择,策略,蓝桥,任务,讲解,区间,最优,贪心
From: https://www.cnblogs.com/trmbh12/p/18254645

相关文章

  • 小于n的最大数 - 贪心算法及证明 - 附python实现
    一、问题描述?    给定一个整数n,并从1~9中给定若干个可以使用的数字,根据上述两个条件,得到每一位都为给定可使用数字的、最大的小于整数n的数。    例如,给定可以使用的数字为{2,3,8}三个数:    给定n=3589,输出3388;给定n=8234,输出8233;…… 二、解......
  • 配方检测分析成分采集多领域技术讲解
    配方分析在多个领域和行业中具有广泛的应用,其主要作用如下:1.产品研发:通过分析竞争对手的产品配方,了解其原料、成分、配比等信息,有助于改进和优化自身产品,提高市场竞争力。2.改进生产工艺:通过分析产品配方,可以优化生产工艺流程、设备参数和原料配比等,提高生产效率和产品质......
  • 关于活化盐添加剂成分分析丨配方还原技术讲解
    活化盐添加剂通常是指用于提高盐类物质(如NaCl、KCl等)溶解性能的化学物质。这些添加剂可以提高盐类在水中的溶解度,从而提高盐类离子的生物利用度。活化盐添加剂的配方因不同产品和应用领域而异,但以下是一种可能的配方和生成方法:配方:1.氯化钠(NaCl):90%2.碳酸氢钠(NaHCO3):5%3.......
  • 二叉树的基础讲解
    二叉树在遍历,查找,增删的效率上面都很高,是数据结构中很重要的,下面我们来基础的认识一下。(高级的本人还没学,下面的代码用伪代码或C语言写的)我会从树,树的一些专有名词,树的遍历,二叉树,二叉树的遍历以及后面升级的树进行一部分的介绍。树首先我们从最开始的树来进行讲解,我们知道......
  • 【简单讲解下epoll】
    ......
  • 【简单讲解下OneFlow深度学习框架】
    ......
  • [C++][数据结构][红黑树]详细讲解
    目录1.红黑树的概念2.红黑树的性质3.红黑树节点的定义4.红黑树的结构5.红黑树的插入操作1.cur为红,p为红,g为黑,u存在且为红2.cur为红,p为红,g为黑,u不存在/u存在且为黑--单旋+变色3.cur为红,p为红,g为黑,u不存在/u存在且为黑--双旋+变色6.红黑树的迭代器1.begin()与end()2.o......
  • Linux – menuconfig讲解
    menuconfig1.简介        menuconfig是一套图像化配置工具,由ncurses库提供软件支持。ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。        menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,比如说通过上下左右调整......
  • LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Pre
    LLM微调方法(Efficient-Tuning)六大主流方法:思路讲解&优缺点对比[P-tuning、Lora、Prefixtuing等]由于LLM参数量都是在亿级以上,少则数十亿,多则数千亿。当我们想在用特定领域的数据微调模型时,如果想要full-tuning所有模型参数,看着是不太实际,一来需要相当多的硬件设备(GPU),二来需要......
  • 蓝桥杯备考冲刺必刷题(C++) | 3792 小蓝的礼物
    学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(C++)|汇总-CSDN博客【题目描述】小蓝想要给她的女朋友小桥买一份生日礼物,她来到了一家礼品店。在店里,她看中了N......