第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结

本文主要是介绍第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第四单元 贪心算法

以下 9 个问题都给出了相应贪心策略,但是为什么这些策略是正确的呢?请自己证明(提示:反证法)。

4.1 装载问题

(1) 简单的装载问题

【问题描述】有 n 件物品和一个容量为 C 的背包。第 i 件物品的重量是 w[i]。求解将哪些物品装入背包可物品
数量最多。
【贪心策略】将物品重量从小到大进行排序,优先挑重量轻的装入背包。

(2) 部分背包问题

【问题描述】有 n 件物品和一个容量为 C 的背包。第 i 件物品的重量是 w[i],价值是 v[i]。每个物体可以取
走一部分,价值和重量按比例计算。求解将哪些物品装入背包可使价值总和最大。
【贪心策略】将背包按照单价(价值/重量的比值)排序。从物美价廉(单价尽可能大)的物体开始挑起,直
到背包装满或没有物体可拿。

(3) 乘船问题

【问题描述】有 n 个人,第 i 个人的重量是 wi。每艘船的最大载重量都是 C,且最多能乘两个人。用最少的船
装尽可能多的人。
【贪心策略】让最轻的人和能与他同船的最重的人乘一条船。如果办不到,就一人一条船。

 4.2 区间问题

(1) 选择不相交区间

【问题描述】数轴上有 n 个开区间(ai, bi)。选择尽量多的区间,使这些区间两两没有公共点。
【贪心策略】按 bi 从小到大的顺序排序,然后一定选择第一个区间。接下来把所有与第一个区间相交的区间排
除在外。这样在排序后再扫描一遍即可。

(2) 区间选点问题

【问题描述】数轴上有 n 个闭区间[a_{i},b_{i}]。取尽量少的点,使得每个区间内都至少有一个点(不同区间内含
有的点可以是同一个)。
【贪心策略】把所有区间按 b_{i}从小到大排序(b_{i} 相同时,a 从大到小排序),然后一定取第一个区间的最后一
个点。

(3) 区间覆盖问题

【问题描述】数轴上有 n 个闭区间[a_{i},b_{i}]。选择尽量少的区间来覆盖指定线段[s, t]。

 【贪心策略】
1. 预处理:扔掉不能覆盖[s, t]的区间。

这篇关于第四单元 贪心算法 4.1 装载问题 4.2 区间问题 4.3 删数问题 4.4 工序问题 4.5 种树问题 4.6 马的哈密尔顿链4.7 三值的排序 4.8 田忌赛马 4.9 小结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290846

相关文章

Java Map排序如何按照值按照键排序

《JavaMap排序如何按照值按照键排序》该文章主要介绍Java中三种Map(HashMap、LinkedHashMap、TreeMap)的默认排序行为及实现按键排序和按值排序的方法,每种方法结合实... 目录一、先理清 3 种 Map 的默认排序行为二、按「键」排序的实现方式1. 方式 1:用 TreeM

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

idea npm install很慢问题及解决(nodejs)

《ideanpminstall很慢问题及解决(nodejs)》npm安装速度慢可通过配置国内镜像源(如淘宝)、清理缓存及切换工具解决,建议设置全局镜像(npmconfigsetregistryht... 目录idea npm install很慢(nodejs)配置国内镜像源清理缓存总结idea npm in

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

全网最全Tomcat完全卸载重装教程小结

《全网最全Tomcat完全卸载重装教程小结》windows系统卸载Tomcat重新通过ZIP方式安装Tomcat,优点是灵活可控,适合开发者自定义配置,手动配置环境变量后,可通过命令行快速启动和管理... 目录一、完全卸载Tomcat1. 停止Tomcat服务2. 通过控制面板卸载3. 手动删除残留文件4.

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型: