Part1.1 基础算法-贪心算法

Part1.1 基础算法-贪心算法

A. 活动安排

问题描述

给定 n n n 个区间 [ l , r ] [l, r] [l,r],你需要选出 m m m 个区间使其互不相交,问你 m m m 的最大值是多少

解题思路

考虑当前已经按照顺序选择了 i − 1 i - 1 i1 个互不相交的区间,当前需要添加第 i i i 个与 i − 1 i - 1 i1 不相交的区间

显然 L i ≥ R i − 1 L_{i} \geq R_{i-1} LiRi1,那么我需要使得后续的队列尽可能的长,由于 L i L_{i} Li 范围固定,显然需要使得 R i R_{i} Ri 尽可能的小才能使得后续队列更长,那么每次向队列添加区间时选择 R i R_{i} Ri 最小的那个即可使得队列最长(贪心问题的最优子结构)

B. 种树

问题描述

n n n 段路,村民给了 h h h 组建议即 [ b i , e i ] [b_{i},e_{i}] [bi,ei] 路段至少需要种植 t i t_{i} ti 颗树,问你最少种植多少颗树能满足所有的建议

解题思路

考虑当 h = 2 h = 2 h=2 时有三元组 ( b 1 , e 1 , t 1 ) (b_{1},e_{1},t_{1}) (b1,e1,t1) ( b 2 , e 2 , t 2 ) (b_{2},e_{2},t_{2}) (b2,e2,t2),不妨设 b 1 ≤ b 2 b_1 \leq b_2 b1b2

  1. e 2 ≤ e 1 e_2 \leq e_{1} e2e1
    即区间 1 包含区间 2,那么尽可能的在区间 2 多种树即可
  2. b 2 ≤ e 1 b_{2} \leq e_{1} b2e
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值