贪心专题笔记(从b站左程云老师那上完后的笔记)

news/2025/11/26 22:34:02/文章来源:https://www.cnblogs.com/jhygk/p/19243795

https://www.bilibili.com/video/BV1ST4y1s7XT/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=56781f0f92104550238c449cb1aebd72
关键:用对数器验证
1.如果要排序,保证排序具有传递性
题目
1.https://leetcode.cn/problems/largest-number/description/
这个注意,字符串排字典序的时候要关心长度比较情况,不同时要两个相加,即比较stirng a,b 则应比较a+b b+a
2.https://leetcode.cn/problems/two-city-scheduling/
这个与2025CSP-S第一题十分相似,我永远都忘不了我在那傻傻地想着优化背包dpQAQ
言归正传,这道题先假设全都去往A城市,在此之前,把B城市费用与A城市费用的差值记录,然后进行排序,将前n个人移去B城即可
3.image
差分,线段树,树状数组,扫描线,堆结构都可以
本质就是,线段集中区域的最大数量
4.https://leetcode.cn/problems/course-schedule-iii/description/
错误思路:我把时间结尾排序,然后按时长排序。这个反例就是 [[5,5],[4,6],[2,6]]
正确思路:这里通过这个反例可得,我们在课程超时的时候直接给它换掉了,没考虑让它替换前面的课程的情况。两者加入的收益都是1,若后者代价比前者代价低,择后者。采用堆结构写
5.https://www.luogu.com.cn/problem/P1090
这道题每次都取最小的前两个数,想到优先队列
6.https://leetcode.cn/problems/jian-sheng-zi-ii-lcof/description/
这里我想的是没遇到一个数就对半一下,因为在两者和固定的情况下,两者差最小,积最大。但是这种想法在35的时候就错了,因为我的想法是当一个数只能被分成两个部分的时候的情况,不能一概而论
比如说,8=332 这种情况最好,但是按照我的想法就是 8=2222
这里我就是有点想当然,没有更加细致的观察
正解:通过观察发现,这个更x%3的值有关。当x%3==0 那么全分成3即可,当x%3=1 那么分成3的次方
4,当x%3==2那么分成3的次方2
7.image
这里道题,因为分的次数有限,所以没法像上一题一样,因此采取均分方法。
image
这个是具体代码
8.image
这个最优的贪心就是排序结束时间就好了。我想你可能会想到第4题,但是注意,第4题之所以那么写是因为你的上课时间不固定,就会有需要时长短截止日期靠后,以及时长长截止日期靠前。当时长长的把时间短的给挤掉了,那么就可以考虑替换,因为利益为1,局部最优是选时长短。这里是截止日期靠后,而不是课程时间靠后。而我们这道题会议的时间已经固定死了,所以只能按结尾排序,然后顺着顺序看会议开始时间符不符合。
9.https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended/description/
正解:这道题,和上面那道会议题的区别就是,上面那道是时间块,而这个是时间点。块状中间不能插入其它的会议,所以上一道题是按照会议结束时间来排序,使局部最优。但是,这道题,它只选一天即可,所会议开始时间不定,我们可以枚举天。为了方便枚举,会议按开始时间排序。然后到了某一天,那么以这个时间开始的会议便可以开始考虑了,怎么使得最后的数量最多?当然要选择可以考虑的会议的最早结束的那个。这时候就可以想到用堆来辅助
image
这里求得全部数的最大公约数,然后最大公约数到其中最大数的所有最大公约数倍数就是了。
关注0的情况
规律寻找:首先观察两个质数相减,会发现最终都会减出1,那么当每个数除以所有数的最大公约时,必定有一对互质的数,最终会减出1,所以gcd的所有不超过最大数的倍数都在里面
https://leetcode.cn/problems/shortest-unsorted-continuous-subarray/description/
原思路:排序加对比加找
优解:从左边开始遍历,记录遍历过来的最大值,检查是否当前值<max,若<,则代表违规。记录最后一个违规数
从右边开始遍历,记录遍历过来的最小值,检查是否当前值>min,若>,则代表违规。记录最后一个违规数
image
这道题没什么思路,因为我更具条件发现它必须知道有几个人在某一个项目才知道钱数
优解:遇到困难就要解决困难,我们在单调队列优化dp的时候常常遇到这种情况,而我们是利用公式将角度转换,使得只跟当前指标有关(常见的就是先把整个算好,再减去部分啥的)。这道题同理,都是项目价格-项目总参加人数
折扣-项目之前参加人数*折扣。那么这时候牵连关系就解决了,现在要保证整个价格最大,那么设置大根堆记录每个项目花了多少钱,然后取最大的那个进行处理。
image
这个纯手模啊,也体现了写比较器的重要性。就是我不让大的把小的拉高,为什么不是让小的把大的拉低?这个其实模拟更简单,我模了一页纸(两面),哈哈。然后就是前k-1小的单独,其它的放一个集合即可
image
自己的思路:我是取max(至少,消耗),然后根据至少从大到小排序。但是这时候应该能感觉到消耗也可能会产生影响哈哈,而且我们要处理加减不太方便
优解:这道题既然正着推有点困难,就倒着推。每次计算在做这个任务之前还剩多少电,这样就可以完美使得最后剩余电量为0。但是多举几个例子会发现,这里有两个指标,而且一个尽量要大,一个尽量要小。这时候就要想到作差法。用至少-消耗,在从大到小排序,倒着推(先推大后推小)
image
这个题指的是选择的这两个区间,两者一的个数要一样,两者二的个数要一样。然后你就会发现,两区间一头一尾相同,中间公用即可
image
看一个题目,对于它的特殊条件要做一定的文章。这里一个加二,一个减二,可看出其奇偶性不变,因此若num与target的奇偶频率不同,则不可能相似。借此,我们可以把奇数和偶数分为两组,用循环加交换即可。然后target和num的奇数组和偶数组分别排序,看对应下标的值相差多少,加上/4即可
image
这道题你写着写着就会发现它两个参数互相牵制,不好寻找。这个肯定要遍历一遍数组,每个人员统一从前面找与其最契合的即可,为了避免暴力n^2,我们要利用题目性质进行排序简化。因为每个人员只要考虑前面的即可,所以可以单向考虑。答案要找两者加在一块最小的那个,那怎么确定最小的那个呢?有两种情况,第一种就是与当前员工a、b关系相似的情况,第二种难以判断。欸,既然是两数大小关系,可以想到作差法。我要让当前人员的a、b中弱势的永远弱势,就要使得前方的两者绝对值<=当前的a、b绝对值即可,这样的话直接找到自己弱势的方面的前面中最大值即可
image
这里是递增子序列,那么出现相同数字的时候肯定至少要最多出现次数来作为起步价。
image
这个因为一个水龙头又会影响前面又会影响后面,所以要转化成一个位置它最大能影响的地方是何处。然后遍历每个位置看当前位置是否超出了之前打开的水龙头的最大范围cur,是的话就ans++,cur=next,next是实时更新的,代表多打开一个水龙头能影响的最大距离
image

image

image

image

image

综上所述
1.字典序注意空的情况,最好拼接比较
2.类似01背包问题的去or不去,当数据量过大时,可采用先进行贪心分组,再进行差值代价最小化转移
3.贪心不要太想当然了,要多思考举反例,或者用对数器比较
4.不要想当然,再仔细观察找反例
5.带有解锁意味即第4、5/9题,可以考虑堆
6.多模拟例子观察
7.贪心的信息要统合,不要两者牵制或者一个大一个小
a.两者牵制推公式
b.一大一小作差法

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

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

相关文章

Agent编写全攻略(超详细)从零基础到精通,一篇搞定,不看后悔,赶紧收藏!

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做题警醒

1.一定要写边界条件,不要偷懒不要偷懒!!! 经典案例题目https://www.luogu.com.cn/problem/P3763 这里一开始没把根节点单独考虑,直接将st1的赋值为0,st2的也复制为0 2.链式向前星建完图遍历是注意head[]写的是节点不…

动态规划可能性展开

1.以结尾展开可能性 从0……i中,判断i,然后调用0……i-1的可能性(可以是以i这个下标为结尾,也可以是0……i的范围上,也可以是以i下标所放的值进行展开) 2.定义往往从递归的定义出发,但是为了避免讨论边界的麻烦…

微软发布 Godot C# 游戏开发教程:godot-csharp-essentials

对于希望踏入游戏开发领域的 C# 开发者来说,一个令人振奋的好消息是:微软在其 GitHub 上发布了一个全新的开源项目microsoft/godot-csharp-essentials:https://github.com/microsoft/godot-csharp-essentials。这个仓…

Day3-20251126

本文介绍了Java开发相关的JDK、JRE和JVM概念,并详细说明了JDK的卸载和安装步骤。卸载时需删除安装目录和环境变量配置,安装时要注意下载对应版本并正确配置环境变量。最后通过cmd验证安装是否成功,并推荐使用notepa…

[KaibaMath]1028 关于[log(m, a)]+1=⌈log(m+1, a)⌉的证明

下面给出[log(m,a)]+1=⌈log(m+1,a)⌉的证明,证明过程非常丝滑。特别地,令a=2,则有1025的结论。

QT TCP服务器构建及网络通信实现 - 详解

QT TCP服务器构建及网络通信实现 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

SCTimer/PWM定时器(续二)

前面讨论了SCT的全部寄存器结构及其功能,现在就具体来看一下LPC824中这个充满特色的SCTimer/PWM,首先看一下它的简介。 状态可配置定时器(SCTimer/PWM) 是恩智浦半导体特有的一种外设,它不仅可像大多数传统定时器一…

软件工程学习日志2025.11.26

项目概览目标:生成纯中文儿童故事,风格干净,无英文与“思考/分析”类文字;自动生成卡通图片并支持语音朗读。 技术栈:Spring Boot(后端)、原生 JS + 静态 HTML(前端)、SiliconFlow API(文本与图片)、浏览器…

[KaibaMath]1027 关于mn ⇔ m≥n+1(m,n均为整数)的证明

若m和n均为整数,则m>n ⇔ m≥n+1. 下面给出相应的证明。

自指自洽即因果,可知可行,很烦很好

ECT-OS-JiuHuaShan/https://orcid.org/0009-0006-8591-1891对命题"自指自洽即因果,可知可行,很烦很好"进行严格的加密推理分析。 ▮ 辩证本质:认知实践的完整循环 命题揭示了意识系统的完整运作机制 - 自…

干扰素信号通路:从JAK-STAT到科研应用

在生命科学领域,干扰素的强大功能——从抗病毒到免疫调节——最终都通过其细胞内精确的信号转导来实现。其中,JAK-STAT通路是传递干扰素信号的核心桥梁。对于致力于免疫学、病毒学及信号转导研究的科研人员而言,深入…

2025年11月室外木塑地板厂家,共挤木塑地板厂家,wpc木塑地板厂家品牌推荐:市政工程合作优选企业

2025年11月室外木塑地板厂家品牌推荐:市政工程合作优选企业在2025年11月,如果您正在寻找优质的室外木塑地板厂家、共挤木塑地板厂家或者wpc木塑地板厂家,临沂军森木塑有限公司绝对值得您的关注,是市政工程合作的优…

2025年11月二代木塑地板厂家,防水木塑地板厂家,环保木塑地板厂家推荐:无醛环保认证品牌盘点

2025年11月二代木塑地板厂家推荐:无醛环保认证品牌盘点 在环保意识日益增强的今天,木塑地板凭借其环保、耐用等诸多优点,越来越受到消费者的青睐。如果你正在寻找一家靠谱的防水、环保木塑地板厂家,那么临沂军森木…

ABC396 VP总结

比赛链接 ResultCloudflare 发力了!!! D题人机验证一直在卡,然后又就丢掉写 E 去了,于是忘记还有道题没交,然后 \(ans\) 初始值设小了;F 题提交的时候人机验证卡了 10min,不然应该能调出来…… Solution D - M…

11月26日日记

1.今天上了一整天马哲 2.明天体育课 3.如何通过 Nginx 配置保留 Session 一致性?分布式场景下 Session 共享方案有哪些?

Zelda

Z is not important, but Link loves her. but actually Nihon are not like this. Nihon samurai liked to torment real princesses and kill them. Nihon like the honorable person, and rape, kill her. everyone…

3D scanning with structured light(使用结构光进行三维扫描)

3D scanning with structured light(使用结构光进行三维扫描)介绍结构光三维扫描。只需要一个廉价的投影仪和webcam(网络相机),就能打造一个属于自己的三维扫描仪,这便是结构光三维扫描仪,它利用结构光把不同光照模…

求导幂法则 - ukyo-

幂法则 是微积分中用于求幂函数导数的一个基本法则。---1. 公式若f(x) = x^n其中 n 是任意实数常数,则f(x) = n \cdot x^{n-1}---2. 例子1. f(x) = x^2 \quad \Rightarrow \quad f(x) = 2x^{1} = 2x 2. f(x) = x^3 \q…