| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 集训心得——贪心算法 -> 正文阅读 |
|
[数据结构与算法]集训心得——贪心算法 |
? 所谓贪心,就是在有限制的情况下去最大程度的达到我们的目的。 ? 以下列举几个贪心的典型例题: 1.排队问题 ? ?问题描述:n个人到r个水龙头接水,装满水桶的时间分别未t1,t2,t3……接水的时间是互不相等的整数,怎样安排可以使每个人的等待时间和最小? ? ?问题解决:对n个人的打水时间从大到小排序即可,因为排队越靠前被计算的次数就越多,这样就可以达到打水时间最短的目的。 ? 输入: ????????第一行:输入总共人数。 ? ? ? ? 第二行:输入每个人的接水时间,并用空格隔开。 ? 输出: ? ? ? ? 一个整数,最小的等待时间。
2.最优装载问题 ? 问题描述:现有n个物体,第i个物体的重量为Wi。在总重量不超过C的前提下选择尽量多的物体。 ? 问题解决:该问题提出需要尽可能多的装物体,我们只关心物体的数量,选择装轻的物体可以使我们装更多。因此对物体的重量进行排序后,依次选择物体,直至装不下了。(考虑装不满的情况) 3.部分背包问题 ? 问题描述:该问题与最优装载问题相似。有n个物体,第i个物体的重量为Wi,价值为Vi。在总重量不超过C的情况下让总价值尽可能的高。物体可以只取走一部分。 ? 问题解决:该问题关心的是价值,我们需要得到更高的价值,因此将物体的价值从高到低排序,由于可以部分拿,因此当重量和正好为C时即可。(此处应该要注意:背包装不满的情况。) 4.乘船问题 ? 问题描述:有n个人,第i个人重量为Wi。每艘船的最大载重量为C,且最多只能坐两个人。用最少的船能够承载所有人。 ? 问题解决:遇到这个问题,应该会想到要最轻的和最重的做一艘船并依次类推,若最轻和最重的坐一艘船仍然超重,那么最重的那个人就单独坐一艘船,以此道理类推即可。 下面给出一个例题:
代码如下:
5.区间类 ? 问题描述:数轴上有n个开区间(ai,bi)。尽可能选择多个区间,使区间两两没有公共点。 ? 问题解决:首先将区间右端点进行排序(右端点越小,留出的空间越多)。并使所取的第i个区间的右端点小于等于第i+区间的左端点。因为贪心策略,一定要选第一个区间,再根据上述条件继续选择。
以上就是贪心算法的部分总结~ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 17:35:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |