![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
贪心算法
文章平均质量分 73
leetcode贪心算法总结
lzk_nus
这个作者很懒,什么都没留下…
展开
-
洛谷P3132 [USACO16JAN]Angry Cows G 题解
洛谷P3132题解【题目描述】奶牛Bessie设计了一个游戏:“愤怒的奶牛”。游戏的原型是:有一些可爆炸的草堆分布在一条数轴的某些坐标上,玩家用弹弓把一头奶牛发射到数轴上。奶牛砸到数轴上的冲击波会引发附近的草堆爆炸,而被引爆的草堆可能会引爆其他草堆。游戏的目标是玩家用一只奶牛炸掉所有的草堆。有N个草堆在数轴的不同位置,坐标为x1,x2,….,xnx_1,x_2,….,x_nx1,x2,….,xn。如果玩家以能量RRR把奶牛发射到坐标xxx,就会引爆半径RRR及以内的的草堆,即坐标范围[x−R,原创 2022-01-28 00:20:16 · 1496 阅读 · 0 评论 -
洛谷P3104题解
洛谷P3104题解Farmer John’s N cows (2 <= N <= 500) have joined the social network “MooBook”.Each cow has one or more friends with whom they interact on MooBook. Just for fun, Farmer John makes a list of the number of friends for each of his cows, but d原创 2022-01-12 00:46:00 · 155 阅读 · 0 评论 -
洛谷P1031题解
洛谷P1031题解有N堆纸牌,编号分别为1,2,…,N。每堆上有若干张,但纸牌总数必为N的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1堆上取的纸牌,只能移到编号为2的堆上;在编号为NN的堆上取的纸牌,只能移到编号为N-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如N=4,4堆纸牌数分别为:①99②88③1717④66移动3次可达到目的:从 ③ 取4张牌放到 ④ (9,8,13,10)-&g原创 2022-01-12 00:45:24 · 679 阅读 · 0 评论 -
贪心算法总结
Greedy贪心算法是一个非常常见的算法,根据字面意思,贪心就是贪婪,因此在贪心算法中,我们抛弃了大局观,转而去关注每一个局部子问题,对每一个局部子问题去求最优解,最后把所有的局部最优解结合起来作为我们最终的全局解。那么很直观的一个问题就是,局部最优解的结合很多时候并不一定是全局最优解,因此贪心算法是存在局限性的,不能去处理“最大”或者“最小”问题。作为一个AIerAIerAIer,贪心算法与我们的梯度下降算法很像,即有时候我们得到的只是局部最优,但有时候,我们也能得到全局最优或者全局最优解的近似解。贪原创 2022-01-12 00:44:47 · 1023 阅读 · 0 评论 -
leetcode 253 会议室II
leetcode 253题目大意:给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [s1,e1],[s2,e2],...[sn,en](si<ei)[s_{1},e_{1}],[s_{2},e_{2}],...[s_{n},e_{n}] (s_{i} \lt e_{i})[s1,e1],[s2,e2],...[sn,en](si<ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。思路:这又是一道用到了优原创 2020-11-10 23:24:42 · 197 阅读 · 0 评论 -
leetcode 1353 最多可以参加的会议数
leetcode 1353题目描述:给你一个数组 events,其中 events[i] = [startDayi, endDayi] ,表示会议 i 开始于 startDayi ,结束于 endDayi 。你可以在满足 startDayi <= d <= endDayi中的任意一天 d 参加会议 i 。注意,一天只能参加一个会议。请你返回你可以参加的 最大 会议数目。思路 :首先,这道题是不是有点眼熟?这不就是洛谷p1803线段覆盖嘛!#include<cstdio>#in原创 2020-11-09 12:58:40 · 330 阅读 · 0 评论 -
leetcode 406 根据身高重建队列
leetcode 406题目描述:假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。思路:这题菜菜的我没想出来正解思路……其实困扰的我的一直就是一个问题:无后效性。怎么才能让当前的构建不对之前的构建产生影响呢?(到这都没想出来我也真是菜 )那就是按照身高降序排序,身高相同的按k值升序排序。因为个子矮的不会对个子高的产生影响!然后,对于每一个元素,他的k值即为他在答案列表中应该插入的位置原创 2020-11-08 23:57:08 · 563 阅读 · 0 评论 -
leetcode 870 优势洗牌
leetcode 870题目描述:给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。返回 A 的任意排列,使其相对于 B 的优势最大化。我的思路:这道题思路蛮好想的,就是每次贪心的找A中最小的大于当前B中元素的元素,听起来有点绕?那给你四个字:田忌赛马……是的,这是同一个问题。但这下就卡在了python的实现上,在C++里我们有lower-bound和upper-bound,但在python里我们没有,所以我们就想到了类似于双原创 2020-11-08 23:40:42 · 206 阅读 · 0 评论 -
Leetcode 1564 把箱子放进仓库里1
Leetcode 1564 把箱子放进仓库里1题目描述:给定两个正整数数组 boxes 和 warehouse ,分别包含单位宽度的箱子的高度,以及仓库中 n 个房间各自的高度。仓库的房间分别从 0 到 n - 1 自左向右编号, warehouse[i] (索引从 0 开始)是第 i 个房间的高度。箱子放进仓库时遵循下列规则:箱子不可叠放。你可以重新调整箱子的顺序。箱子只能从左向右推进仓库中。如果仓库中某房间的高度小于某箱子的高度,则这个箱子和之后的箱子都会停在这个房间的前面。你最多可以在仓原创 2020-10-30 09:30:32 · 884 阅读 · 0 评论 -
leetcode 874.模拟行走机器人
leetcode 874题目描述机器人在一个无限大小的网格上行走,从点 (0, 0) 处开始出发,面向北方。该机器人可以接收以下三种类型的命令:-2:向左转 90 度-1:向右转 90 度1 <= x <= 9:向前移动 x 个单位长度在网格上有一些格子被视为障碍物。第 i 个障碍物位于网格点 (obstacles[i][0], obstacles[i][1])机器人无法走到障碍物上,它将会停留在障碍物的前一个网格方块上,但仍然可以继续该路线的其余部分。返回从原点到机器人所有原创 2020-10-27 11:35:23 · 206 阅读 · 2 评论 -
leetcode 392.判断子序列
leetcode 392.判断子序列题目大意:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。思路:运用双指针的思想,给s和t分别设置指针i,j,循环中让j一直递增,来寻找t串中原创 2020-10-25 08:04:54 · 57 阅读 · 0 评论