23【c++入门】基础贪心2

本文介绍了C++中贪心算法的应用,包括最优配对问题和带期限和惩罚的任务调整问题。在最优配对问题中,通过贪心策略找到最少船数的解决方案;在任务调整问题中,探讨了不同贪心选择可能导致的局部最优非全局最优的情况,并给出了调整策略。此外,还提供了两个练习题目,进一步巩固贪心算法的应用。
摘要由CSDN通过智能技术生成

大纲

1.最优配对

2.任务调整

3.练习

好久没更新了,因为开学了的原因,最近会更新有点慢

话不多说,继续开启c++之旅

1.最优配对

最优配对引入

问题描述: 有N个人要过河,第i个人重量为𝑤 𝑖 。每艘船的最大载重量均为𝐶 ,且最多只能乘两个人,请问最少需要多少艘船才能将所有人一次性运过河。

① 方案1: 30和40共用1艘船, 50和60各使用1艘船,共需要3艘船。
② 方案2: 30和50共用1艘船, 40和60共用1艘船,共需要2艘船。
③ 方案3: 30和60共用1艘船, 40和50共用1艘船,共需要2艘船。

方案2和方案3都是最优方案,最少需要2艘船。

 【乘船问题】

设i是当前最轻的人,那么i应该跟谁共乘一条船才最优呢?
① 情况1:如果没有人可以和i共乘一条船,那么唯一的方案就是每个人一条船,why?
因为对于任意一个人x,如果他不能和最轻的乘一条船,他就不能和任何人乘一条船。
② 情况2:如果有多个人可以和i做同一条船,那么优先体重最重的那个人j(贪心选择)。
1艘船最多坐2个人,也就是说i最多可以带走一个人,带走最重的,可以使得剩下的
人更容易配对成功。
贪心选择:优先让最轻的和最终的配对,如果最轻的和最重的无法配对,那么最重的自
己乘一条船&#x

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

{∞}

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值