贪心算法
人约黄昏后。
个人blog:www.echobao.cn
展开
-
洛谷p3817 小A的糖果
题目来自:https://www.luogu.com.cn/problem/P3817首先对第一个元素判断,如果第一个就大于x,那么就吃到x,这时候吃了a[0]-x;然后从第二个开始遍历,如果 a[i]+a[i-1]>x, 也就是说加起来大于了x,那么就会吃a[i-1]+a[i]-x个糖。因为是正着遍历,所以要吃后边的。比如说 4 5 3 6 2,x是6, 4+5>6, 如果吃...原创 2020-04-11 23:50:08 · 370 阅读 · 0 评论 -
洛谷p1090 合并果子
题目来自:添加链接描述这个题的思路不难理解,就是每次取最小的两个元素合并后重新放入序列中,再排序再取,如果直接用sort的话很明显每合并一次就要重新sort一次,这样会超时。所以我们可以维护一个优先队列,按从小到大的顺序排列。priority_queue<int, vector<int>, greater<int> > q;一直取前两个元素,也就是最...原创 2020-04-11 09:10:16 · 179 阅读 · 0 评论 -
洛谷 p1094 纪念品分组(贪心)
链接:https://www.luogu.com.cn/problem/P1094和跳跳那道题一样的思路,排序后从两边往中间求贪心解,处理好一些小细节就可以了,可结合跳跳这道题一起看:跳跳 洛谷p4994代码如下:#include<bits/stdc++.h>using namespace std;int main(){ int w,n; cin>&...原创 2020-04-10 22:53:46 · 267 阅读 · 0 评论 -
洛谷p4994 跳跳(贪心)
题目来源:https://www.luogu.com.cn/problem/P4995这个题其实就是一道挺简单的贪心算法,就是讲石头高度排一下序,然后从两头来回跳。不过这里需要处理一些细节,就是青蛙从前往后和从后往前的两种跳跃,可以设置一个index在1和0之间转换,分别代表向前或者向后跳跃。一开始肯定是跳到最高的上面,然后在往最低的跳,再往第二高的跳,再往第二低的跳······就这样循环往...原创 2020-04-10 22:44:57 · 279 阅读 · 0 评论 -
贪心算法之——部分背包问题
对了,贪心算法还有一类部分背包问题也挺经典:下面以洛谷p2240为例,https://www.luogu.com.cn/problem/P2240阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有 N(N \le 100)N(N≤100) 堆金币,第 ii 堆金币的总重量和总价值分别是 mi,vi(1<=mi,vi<=100)。阿里巴巴有一个承重量为 T(T \le 1000)T(T...原创 2020-04-10 22:21:17 · 3765 阅读 · 0 评论 -
贪心算法之——线段覆盖问题
在线段覆盖这个题型中,简单就举两个例子。一个是leetcode 435: https://leetcode-cn.com/problems/non-overlapping-intervals/一个是洛谷p1803:https://www.luogu.com.cn/problem/P1803就从洛谷这道题看起吧,标准的线段覆盖问题,题目就已经明确说明:现在各大 oj 上有 nn 个比赛,...原创 2020-04-10 22:20:36 · 6411 阅读 · 0 评论 -
贪心算法简介篇
来自维基百科:贪心算法(英语:greedy algorithm),又称贪婪算法,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。[1]比如在旅行推销员问题中,如果旅行员每次都选择最近的城市,那这就是一种贪心算法。贪心算法在有最优子结构的问题中尤为有效。最优子结构的意思是局部最优解能决定全局最优解。简单地说,问题能够分解成子问题来解决,...原创 2020-04-10 22:19:36 · 455 阅读 · 0 评论