草庐IT

中位贪心

全部标签

P1417 烹调方案 题解&贪心杂谈

目录DescriptionSolutionCodeDescription一共有\(n\)个食物,每个食物有3个属性,分别为\(a,b,c\),其中\(c\)表示做这道菜的耗时。一个食物的贡献为\(a-b\timest\),其中\(t\)表示做完这道菜的总耗时,求在\(T\)个单位时间内,最多能产生多少贡献。Solution首先,通过\(T\)的限制,\(a-b\timest\)的贡献可以看出这是一道背包问题。我们考虑\(f_{i,j}\)表示前\(i\)个食物耗时\(j\)的时间所得贡献的最大值,而裸的背包是不用排序的,所以考虑直接DP。很快就能发现,这个做法假掉了,因为遍历到\(y\)的时候

Python算法-贪心算法(Greedy Algorithm)

贪心算法在每一次做决策时,保证当下的决策是最优的,从而使得最后的结果是最优的。455.分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j]。如果s[j]>=g[i],我们可以将这个饼干j分配给孩子i,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。#最好的选择是不要浪费饼干classSolution:deffindContentChildren(self,g:List[int],s:List[int])->int

算法:贪心---跳一跳

1、题目:给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。2、分析特点:题目要求:你最初位于数组的第一个下标,判断你是否能够到达最后一个下标==>思维转换:如果我已经到了倒数最后一个位置,到了倒数第二个位置。。。当然想正着理解也可以:设想一下,对于数组中的任意一个位置yyy,我们如何判断它是否可以到达?根据题目的描述,只要存在一个位置x,它本身可以到达,并且它跳跃的最大长度为x+nums[x],这个值大于等于y,即x+nums[x]≥y,那么位置y也可以到达

leetcode2434. 使用机器人打印字典序最小的字符串 出栈顺序 贪心+栈

https://leetcode.cn/problems/using-a-robot-to-print-the-lexicographically-smallest-string/        给你一个字符串s和一个机器人,机器人当前有一个空字符串t。执行以下操作之一,直到s和t都变成空字符串。请你返回纸上能写出的字典序最小的字符串:操作一:删除字符串s的第一个字符,并将该字符给机器人。机器人把这个字符添加到t的尾部。操作二:删除字符串t的最后一个字符,并将该字符给机器人。机器人将该字符写到纸上。示例1:输入:s="zza"输出:"azz"解释:用p表示写出来的字符串。一开始,p="",s=

【算法】反悔贪心

文章目录反悔贪心力扣题目列表630.课程表III871.最低加油次数LCP30.魔塔游戏2813.子序列最大优雅度洛谷题目列表P2949[USACO09OPEN]WorkSchedulingGP1209[USACO1.3]修理牛棚BarnRepairP2123皇后游戏(🚹省选/NOI−TODO)相关链接反悔贪心思路是无论当前的选项是否最优都接受,然后进行比较,如果选择之后不是最优了,则反悔,舍弃掉这个选项;否则,正式接受。如此往复。力扣题目列表630.课程表IIIhttps://leetcode.cn/problems/course-schedule-iii/description/?envT

【算法训练营】贪心算法专题(一)

🕺作者:主页我的专栏C语言从0到1探秘C++数据结构从0到1探秘Linux菜鸟刷题集😘欢迎关注:👍点赞🙌收藏✍️留言🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!前言这篇都是关于贪心算法的OJ题,但是并不只有这一种方法,但在本篇中只写出贪心的解法,标题下面都有超链接,可以同时过去写题哦~之后还会更新相关专题的,敬请期待!!算法解释顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最

刷爆 LeetCode 周赛 337,位掩码/回溯/同余/分桶/动态规划·打家劫舍/贪心

大家好,我是小彭。上周末是LeetCode第337场周赛,你参加了吗?这场周赛第三题有点放水,如果按照题目的数据量来说最多算Easy题,但如果按照动态规划来做可以算Hard题。周赛概览2595.奇偶位数(Easy)题解一:模拟题解二:位掩码+bitCount2596.检查骑士巡视方案(Medium)题解一:模拟2597.美丽子集的数目(Medium)题解一:回溯题解二:同余分组+动态规划/打家劫舍2598.执行操作后的最大MEX(Medium)题解一:同余分组+贪心2595.奇偶位数(Easy)题目地址https://leetcode.cn/problems/number-of-even-an

一看就懂的贪心算法

如何理解贪心算法我们先看一个例子假设有一个可以容纳100kg物品的背包,背包可以装各种物品,我们有以下五种豆子,每种豆子的重量和总价值各不相同。为了让背包中所装物品的总价值最大,我们如何选择在背包中装哪些豆子?每种豆子又应该装多少?我们可以这样想,我们只需要计算出每种豆子的单价,按照价格由高到低依次来装豆子,先按单价最高的豆子装,装不满的话,再装价格相对较低的豆子,直到装满为止。这个问题的解决思路就是用了贪心算法的思想,我们先来看以下贪心算法解决问题的步骤:第一步:套用贪心算法的问题模型:针对一组数据,事先定义了限制值和期望值,希望从中选择几个数据,在满足限制的情况下,期望值最大。针对刚才的例

跳跃游戏【贪心算法】

跳跃游戏给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。在这里插入图片描述classSolution{publicbooleancanJump(int[]nums){if(nums.length==1){//注意先处理数组的特殊情况returntrue;}intcover=0;//跳跃范围初始化为0for(inti=0;icover;i++){//注意:for循环的边界是覆盖的最大值,而不是数组长度cover=Math.max(i+nums[i],cover

贪心算法总结篇

文章转自代码随想录贪心算法总结篇我刚刚开始讲解贪心系列的时候就说了,贪心系列并不打算严格的从简单到困难这么个顺序来讲解。因为贪心的简单题可能往往过于简单甚至感觉不到贪心,如果我连续几天讲解简单的贪心,估计录友们一定会不耐烦了,会感觉贪心有啥好学的。但贪心的难题又真的有点难,所以我是简单困难交错着讲的,这样大家就感觉难度适中,而且贪心也没有什么框架和套路,所以对刷题顺序要求没有那么高。但在贪心系列,我发的题目难度会整体呈现一个阶梯状上升,细心的录友们应该有所体会。在刚刚讲过的回溯系列中,大家可以发现我是严格按照框架难度顺序循序渐进讲解的,和贪心又不一样,因为回溯法如果题目顺序没选好,刷题效果会非