关于贪心学习的文笔记录

贪心,顾名思义就是越贪越好,越多越有易,他给我的感觉是,通常是求最大或最小问题,相比于动态规划贪心让人更加琢磨不透,不易看出方法,为此在这记录我所见过的题型和思维方法,以便回头看看…

核心思想:动态规划是借用之前所有的最佳状态,来推理出当前的最佳状态,与众不同,贪心则是不需要之前的状态,根据一个价值标准’拿的越多越好’,然而这种价值标准必定没有影响后效性,比如来到某个状态点时,消耗了较高代价拿到了最大效益,虽然对于当前状态来说,但是对于未来的某个·点来说,也许有更加好的选择消耗更少的代价来获取较高的效益,所以通常贪心的目的是,找到一种标准价值,按照标准价值来越多越好,或者是通过一定单调性排序,确保每一步都是最优解,然而这一步通常是最难的。

632. 最小区间

你有 k 个 非递减排列 的整数列表。找到一个 最小 区间,使得 k 个列表中的每个列表至少有一个数包含在其中。
我们定义如果 b-a < d-c 或者在 b-a == d-c 时 a < c,则区间 [a,b] 比 [c,d] 小。

示例 1:
输入:nums = [[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]
输出:[20,24]
解释:
列表 1:[4, 10, 15, 24, 26],24 在区间 [20,24] 中。
列表 2:[0, 9, 12, 20],20 在区间 [20,24] 中。
列表 3:[5, 18, 22, 30],22 在区间 [20,24] 中。

这是一道困难题,确实不好想,他的解题思路是,一直观察每个数组的最小值,对于这几个值来说,当前几个数的值显然是最小的那个数的最佳状态,不好解释为什么,凭想吧。于是可以将这个数的价值记录并弹出,依次循环,再找出最佳结果。

135.分发糖果

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
你需要按照以下要求,给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。
相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的最少糖果数目 。

记得第一次作这题时,确实被这种思维感到震惊,后来发现这种思维其他题也会用到,因此是一个不错的例题。

尽量少的分发糖果,我们先将每个人分发一个糖果,正向遍历,如果后一个人的分数大于前一个人,那么后者在前者的基础上加1(确保右边人分数大时,右边人的糖果合理大于左边),再次逆向遍历,左边大于右边人分数时,左边人糖果为右边人糖果加1(确保左边人糖果的合理性);

这种两次遍历的思维,将在下一题同样遇到。
581. 最短无序连续子数组

给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。
请你找出符合题意的 最短 子数组,并输出它的长度。

这题同样是利用左右两次遍历,有上一题的思维。

要想找到不合理的区间,我们只需要找到最右边的不合理数,以及最左边不合理的数,那么什么叫做不和理呢?显然是左边的数大于右边或者右边的数大于左边的数,如果一个数的左边没有比他大的数,右边同样没有比他小的数,那么说明该数是一个合理的数,我们可以先正向遍历,筛选出左边比自己大的不合理的数,然后再逆向遍历筛选出右边小于自己的数,挑出最左边和最右边下标就可以了。

这题与上一题唯一不一样的是,上一题是构造合理环境,这一题是检查不合理环境。

根据规律判断贪心

分成K份的最大乘积

问题:一个数字n一定分成k份,得到的乘积尽量大是多少,数字n和k可能很大,结果需对100000007取模。

这题第一眼想到的是暴力递归,但是即使是记忆化搜索,对于较大数字,也难免会超时,我们先尝试前几个数字最大解,观察一下结果
n=4 2 * 2
n=5 3 * 2
n=6 3 * 3
n=7 2 * 2
n=8 3 * 3 * 2
n=9 3 * 3 * 3
n=10 3 * 3 * 2 * 2
n=11 3 * 3 *3 * 2
n=12 3 * 3 * 3 * 3
n=13 3 * 3 * 3 * 2 * 2

可以发现,当一个数大于4时,可以拆出3时尽量拆3,这样使得乘积最大,当然可以用数学极限来证明,但是还是当作例题记录一下的好。在遇到类似的题也可以考虑一下找规律,虽然这样的题很少,但是对于没有思路的数学问题,还是可以使用这样方法快速找到规律来解题的

排序使问题呈现一定单调性

执行所有任务的最少初始电量
每个任务有两个参数,需要耗费的电量、至少多少电量才开始这个任务
返回手机需要的初始电量,才能执行完所有的任务

仔细想想,我们不难发现,当需要消耗的电量相同时,那么我们应该先让至少电量最多的任务先完成,当至少电量相同时,应该让消耗电量少的先完成。
但是问题来了,如果需要消耗少的与至少电量少组合在一起,或是消耗多和至少多的组合在一起,那么我们应该怎么判定优先级呢。既然这样的话,我们将至少电量需要电量作为值,来排序优先级,直观上感觉是对的,事实上也确实如此,但是关于证明我还没有想好,有点玄学。
对于有的题,此法是行不通的,我见过类似的题目,但是将两因素作差值为优先级并不适用于所有题

知识竞赛
最近部门要选两个员工去参加一个需要合作的知识竞赛,每个员工均有一个推理能力值 ai,以及一个阅读能力bi,如果选择第i个人和第j个人去参加竞赛,两人在推理能力方面的能力为其两者推理能力的平均值,阅读能力同理,现在需要最大化他们表现较差一方面的能力,问这个能力值是多少。

这题依旧是排序解决,只不过是按照两元素差值的绝对值来排序,依次遍历每一个人,寻找前面的人与这第i号人的组合最大值,排序后巧妙之处在于,每当来到第i号人,都可以快速求出,第i号人与前面的人组合的最有解,那是因为,对于第i号人来说,他与前面任意一个人组合必定是自己能力最小的作为结果,由于绝对值排序的缘故,前面任何一个人都不可能弥补第i号人在弱势能力上的差距,所以我们只需要记录前面所经过的两能力各最大值即可,每次来到第i号人都可以快速求出组合最优解。
从这题我们应该学到的是,当不得不暴力求解时,尝试寻找一种策略,使得快速找到一种结果对于第i元素来说一定确保其为最优

可以掌控全局变量的最优决策

在01背包里,其关键思想就是或者不要,来到某个状态时,可以根据前面的所有最佳状态获取当前的最佳状态,当然,这种思维并不只是在动态规划里可以使用。
871. 最低加油次数

汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。
沿途有加油站,用数组 stations 表示。其中 stations[i] = [positioni, fueli] 表示第 i 个加油站位于出发位置东面 positioni 英里处,并且有 fueli 升汽油。
假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中
为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则返回 -1 。
注意:如果汽车到达加油站时剩余燃料为 0,它仍然可以在那里加油。如果汽车到达目的地时剩余燃料为 0,仍然认为它已经到达目的地。

这题,可以使用动态规划思想解决,那么我们要维护的信息是什么呢,当油不够时,我们更期望之前在存储油最多的加油站加油,于是需要维护路过的加油站,对于来到第i个地点来说其最佳状态为以下两种情况 第一:油不够时dp[i]=之前最大加油站的油+当前剩余的油-当前消耗的油,第二:油够时,dp[i]=dp[i]-当前消耗的油;唯一贪心的点在于选取之前路过的最高存储油量的加油站。

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

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

相关文章

c语言练习题【数据类型、递归、双向链表快速排序】

练习1&#xff1a;数据类型 请写出以下几个数据的数据类型 整数 a a 的地址 存放a的数组 b 存放a的地址的数组 b的地址 c的地址 指向 printf 函数的指针 d 存放 d的数组 整数 a 的类型 数据类型是 int a 的地址 数据类型是 int*&#xff08;指向 int 类型的指针&#xff09; …

联想拯救者Y9000P IRX8 2023 (82WK) 原厂Win11 家庭中文版系统 带一键还原功能 安装教程

安装完重建winre一键还原功能&#xff0c;和电脑出厂时的系统状态一模一样。自动机型专用软件&#xff0c;全部驱动&#xff0c;主题壁纸&#xff0c;自动激活&#xff0c;oem信息等。将电脑系统完全恢复到出厂时状态。 支持机型 (MTM) : 82WK 系统版本&#xff1a;Windows 1…

深入解析“legit”的地道用法——从俚语到正式表达:Sam Altman用来形容DeepSeek: legit invigorating(真的令人振奋)

深入解析“legit”的地道用法——从俚语到正式表达 一、引言 在社交媒体、科技圈甚至日常对话中&#xff0c;我们经常会看到或听到“legit”这个词。比如最近 Sam Altman 在 X&#xff08;原 Twitter&#xff09;上发的一条帖子中写道&#xff1a; we will obviously deliver …

Vue 图片引用方式详解:静态资源与动态路径访问

目录 前言1. 引用 public/ 目录2. assets/ 目录3. 远程服务器4. Vue Router 动态访问5. 总结6. 扩展&#xff08;图片不显示&#xff09; 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 在 Vue 开发中&#x…

DeepSeek-R1 本地部署教程(超简版)

文章目录 一、DeepSeek相关网站二、DeepSeek-R1硬件要求三、本地部署DeepSeek-R11. 安装Ollama1.1 Windows1.2 Linux1.3 macOS 2. 下载和运行DeepSeek模型3. 列出本地已下载的模型 四、Ollama命令大全五、常见问题解决附&#xff1a;DeepSeek模型资源 一、DeepSeek相关网站 官…

JVM运行时数据区域-附面试题

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是 依赖用户线程的启动和结束而建立和销毁。 1. 程序计…

2月3日星期一今日早报简报微语报早读

2月3日星期一&#xff0c;农历正月初六&#xff0c;早报#微语早读。 1、多个景区发布公告&#xff1a;售票数量已达上限&#xff0c;请游客合理安排行程&#xff1b; 2、2025春节档总票房破70亿&#xff0c;《哪吒之魔童闹海》破31亿&#xff1b; 3、美宣布对中国商品加征10…

C++ Primer 标准库vector

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.6 广播机制核心算法:维度扩展的数学建模

2.6 广播机制核心算法&#xff1a;维度扩展的数学建模 目录/提纲 #mermaid-svg-IfELXmhcsdH1tW69 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-IfELXmhcsdH1tW69 .error-icon{fill:#552222;}#mermaid-svg-IfELXm…

【Elasticsearch】硬件资源优化

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

bootstrap.yml文件未自动加载问题解决方案

在添加bootstrap.yml文件后,程序未自动扫描到,即图标是这样的: 查了一些资料,是缺少bootstrap相关依赖,虽然已经添加了spring-cloud-context依赖,但是这个依赖并未引入bootstrap依赖,可能是版本问题,需要手动引入 <dependency><groupId>org.springframework.cloud&…

C++底层学习预备:模板初阶

文章目录 1.编程范式2.函数模板2.1 函数模板概念2.2 函数模板原理2.3 函数模板实例化2.3.1 隐式实例化2.3.2 显式实例化 2.4 模板参数的匹配原则 3.类模板希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 进入STL库学习之前我们要先了解有关模板的…

【玩转 Postman 接口测试与开发2_015】第12章:模拟服务器(Mock servers)在 Postman 中的创建与用法(含完整实测效果图)

《API Testing and Development with Postman》最新第二版封面 文章目录 第十二章 模拟服务器&#xff08;Mock servers&#xff09;在 Postman 中的创建与用法1 模拟服务器的概念2 模拟服务器的创建2.1 开启侧边栏2.2 模拟服务器的两种创建方式2.3 私有模拟器的 API 秘钥的用法…

【算法】回溯算法专题③ ——排列型回溯 python

目录 前置小试牛刀回归经典举一反三总结 前置 【算法】回溯算法专题① ——子集型回溯 python 【算法】回溯算法专题② ——组合型回溯 剪枝 python 小试牛刀 全排列 https://leetcode.cn/problems/permutations/description/ 给定一个不含重复数字的数组 nums &#xff0c;返…

LabVIEW如何高频采集温度数据?

在LabVIEW中进行高频温度数据采集时&#xff0c;选择合适的传感器&#xff08;如热电偶或热电阻&#xff09;和采集硬件是关键。下面是一些建议&#xff0c;帮助实现高效的温度数据采集&#xff1a; 1. 传感器选择&#xff1a; 热电偶&#xff08;Thermocouple&#xff09;&am…

人工智能:农业领域的变革力量

在当今科技飞速发展的时代&#xff0c;人工智能正以前所未有的态势渗透进各个领域&#xff0c;农业也不例外。想象一下&#xff0c;未来的农田里&#xff0c;农民不再是弯腰劳作的形象&#xff0c;而是坐在高科技的“智能农场”里&#xff0c;悠闲地喝着咖啡&#xff0c;指挥着…

LLM的Deep Research功能:重构人类认知与创新的新范式

在人工智能迅速发展的今天&#xff0c;大语言模型&#xff08;LLM&#xff09;的deep research功能正在成为重构人类认知方式的关键力量。 这一突破性的技术进展不仅带来了工具层面的革新&#xff0c;更深刻地触及了人类认知能力的本质。 本文将从认知科学的视角出发&#xf…

【Cadence仿真技巧学习笔记】求解65nm库晶体管参数un, e0, Cox

在设计放大器的第一步就是确定好晶体管参数和直流工作点的选取。通过阅读文献&#xff0c;我了解到L波段低噪声放大器的mos器件最优宽度计算公式为 W o p t . p 3 2 1 ω L C o x R s Q s p W_{opt.p}\frac{3}{2}\frac{1}{\omega LC_{ox}R_{s}Q_{sp}} Wopt.p​23​ωLCox​Rs…

前端力扣刷题 | 6:hot100之 矩阵

73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 法一&#xff1a; var setZeroes function(matrix) {let setX new Set(); // 用于存储需要置零的行索引let setY new Set(); //…

集合通讯概览

&#xff08;1&#xff09;通信的算法 是根据通讯的链路组成的 &#xff08;2&#xff09;因为通信链路 跟硬件强相关&#xff0c;所以每个CCL的库都不一样 芯片与芯片、不同U之间是怎么通信的&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 很重要…