贪心算法——(2:应用)
来源:互联网 发布:广寒仙子皎月淘宝价格 编辑:程序博客网 时间:2024/06/06 01:28
昨天我们初步了解学习了贪心算法,但仅仅是一些皮毛而已,今天我们来看看贪心的应用。
**
贪心的经典应用
**(一)、三个区间上的问题
1、选择不相交区间问题
2、区间选点问题
3、区间覆盖问题
(二)、两个调度问题
1、流水作业调度问题
2、带限期和罚款的单位时间任务调度
(三)Huffman编码
(四)最优合并问题**
**
1、选择不相交区间问题
**
**给定n个开区间(ai, bi),选择尽量多个区间,使得这些区间两两没有公共点。
【算法实现】首先按照b1<=b2<=…<=bn的顺序排序,依次考虑各个活动,如果没有和已经选择的活动冲突,就选;否则就不选。
贪心策略:取第一个区间;
【正确性】:如果不选b1,假设第一个选择的是bi,则如果bi和b1不交叉则多选一个b1更划算;如果交叉则把bi换成b1不影响后续选择。**
例题1:活动安排
设有n个活动的集合E={1,2,..,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si
2、区间选点问题
给定n个闭区间[ai, bi],在数轴上选尽量少的点,使得每个区间内都至少有一个点(不同区间内含的点可以是同一个)。
【算法】:首先按照b1<=b2<=…<=bn排序。每次标记当前区间的右端点X,判断下一个区间的左端点是否小于等于X,直到当前区间不包含X,再重复上述操作(又取当前区间的右端点……)。
贪心策略:取最后一个。
**
例题2:种树(NOIP模拟试题)
**
一条街的一边有几座房子。因为环保原因居民想要在路边种些树。路边的地区被分割成块,并被编号为1..n。每个块大小为一个单位尺寸并最多可种一棵树。每个居民想在门前种些树并指定了三个号码b,e,t。这三个数表示该居民想在b和e之间最少种t棵树。当然,b<=e,居民必须保证在指定地区不能种多于地区被分割成块数的树,即要求t<=e-b+1。允许居民想种树的各自区域可以交叉。出于资金短缺的原因,环保部门请你求出能够满足所有居民的要求,需要种树的最少数量
- 贪心算法——(2:应用)
- 活动安排问题——贪心算法应用(2)
- 活动安排问题(C语言实现)——贪心算法应用(2)
- [算法题] 安排会议室——贪心算法的应用
- 算法—贪心(1)
- 贪心算法应用——最小生成树
- 找零钱问题(C语言实现)——贪心算法应用(1)
- 多机调度问题(C语言实现)——贪心算法应用(4)
- 找零钱问题(C语言实现)——贪心算法应用(1)
- 【0-1背包和背包问题——贪心算法应用(3)】
- 【多机调度问题——贪心算法应用(4)】
- 贪心算法简单应用
- 算法——贪心
- 贪心算法—导弹
- 总结—贪心算法
- 贪心算法(2)
- 贪心算法(2)
- 贪心算法(2)
- 纯html页面之间传递参数
- cmd命令
- 类与对象
- mysql启动binlog以及基本操作
- 实时语义分割--ICNet for Real-Time Semantic Segmentation on High-Resolution Images
- 贪心算法——(2:应用)
- Andrew NG 机器学习 笔记-week2-多变量线性回归
- git使用
- MySQL错误You can't specify target table for update in FROM clause
- GCD的基本使用
- 如何将本地代码使用Git上传至Github
- HDU 6156 2016ICPC网络赛 G: Palindrome Function(数位DP)
- 修改Ubuntu的aptget源为阿里源的方法
- 类型基础