浮点数解析
炸鱼题掠过
冲突值
题面
解析
方法一 —— 并查集
按照边值排序,然后按边值从大到小遍历,通过并查集判断能否将所有点无冲突地归于两个集合。在判断时,若有两个点不得不产生冲突,则输出这两个点之间的边值并结束。若无冲突则输出0.
方法二 —— 二分答案
二分答案的主旨思想可先看后面的“拓展——二分答案”。
下面来说一下在本题中的应用
代码
方法一 —— 并查集
方法二 —— 二分答案
拓展
二分答案
思想
解题的时候往往会考虑枚举答案然后检验枚举的值是否正确。若满足单调性,则满足使用二分法的条件。用二分来替代顺序枚举,就变成了「二分答案」。
二分过程的规则如下:
- 每次测试中间位置
M
处的元素,其中M = (L+R)>>1
向下取整。 - 如果测试不正确,则收缩左界:
L ← M+1
,可以跨过M
,因为它不属于可行解。 - 如果测试正确,则收缩右界:
R ← M
,注意M
仍在可行解范围内。 - 不断收缩可行解范围,直到
L==R
为止,即得到左边界。
例:借教室
例:值等于索引的元素
给定一个有序整数数组 A,其中元素各不相同,要求确认是否在其中存在一个索引 i 可以使得 A[i] = i 。 -- 来自 《算法概论》 习题 2.17
题型:最大值最小化问题
(专门整理一期,等整理出来了把链接放评论区)