当前位置:   article > 正文

学习总结:贪心算法_如何学习贪心算法总结

如何学习贪心算法总结

这几周通过课上的学习和课下的训练,总结一下对贪心算法问题的分析和使
用。

一、贪心算法的基本思路:

(1)先读懂题,英语阅读理解max,搞清输入输出的具体要求;
(2)模拟,用最基本的的思路思考整个问题;
(3)优化算法:用算法的思想简化优化;
(4)多角度灵活思考:正难反易、复杂问题=简单问题+限定条件;
(5)参考经典例题,回归经典例题;
(6)一些数学归纳方法也很重要;

二、编写过程中的几个注意事项:

1.万能头文件
怎么省事怎么来
(1)#include <bits/stdc++.h>
(2)
#include
#include <string.h>
#include <stdio.h>
#include
#include
#include
#include
#include <math.h>
#include //有些情况下(1)无法使用;
2.开区间并置零;
置零太重要了,忘了就要出事(血泪教训);
memset函数:memset(a,0,sizeof(a));//注意头文件#include <string.h>;
3.排序:
贪心算法不排序是不可能的
(1)冒泡和简单选择是什么鬼;
(2)sort排序太重要了;
sort(a,a+n,cmp);//注意vector数组:sort(a.begin(),a.end(),cmp);千万不要弄错;
(3)优先队列、set等等使用较少;//说来说去还是sort好;
4…输入输出:
就不细说了,用scanf和printf就对了;
5.不要将问题想的太复杂,自己瞎折腾;

三、经典好题:

1.博弈问题,两种最优

题意:学生给学生会主席提出n个提案,筛选通过p个,这P个提案主席可接受k个拒绝p-k个。每个提案都有相应的“劳累值”和“拒绝后的领导不满意度”。
学生:优先选择劳累度最大的提案,劳累度相同选择拒绝后的领导不满意度最高的提案;
主席:优先拒绝拒绝后的领导不满意度最小的提案,拒绝后的领导不满意度最小相同拒绝劳累度最高的提案;
要求:提出p个方案,使让学生会主席劳累值最大,而且他拒绝的p-k个提案使领导不满意度最大。

分析:
现将主席最希望接受的n-p个提案排除,再选出k个对己方最有利的提案,最后选出p-k个主席不得不拒绝的提案。
1)先按照“满意度”升序,“满意度”一致的情况下,按照“劳累值”降序,前n-p个提案主席一定会拒绝,所以我们不选。
2)在已经通过的p个里面,选出一定通过的k个方案。还先按照“劳累值”降序,再让相同“劳累值”下“满意度”降序。
3)剩下的p-k个提案选不满意度最大的,保证主席一定拒绝。

2.区间选择:

题意: xoy平面上,x轴的上方是岛屿,x轴上有雷达,给出岛屿坐标,能够把所有岛检测到而且需要最少数量的雷达,求这个最小数量。

分析:
这个题重在转化,记忆深刻:
1)以每一个岛屿为圆心以输入r为半径做圆,设其与x轴交点为x1,x2(x1<x2),找到区间,在这个范围内必然存在一个雷达可以检测到这个岛;
2)同样的方法找出所有区间,并按照x2升序,若x2相等则x1升序的规则将所有区间排序;
3)定位、前后比较;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小舞很执着/article/detail/934290
推荐阅读
相关标签
  

闽ICP备14008679号