上期是查找上下界,这期是二分答案上下界
一.二分答案
解题思路:确定枚举思路,通过二分答案对枚举思路进行优化
1.确定枚举对象,一般求什么就枚举什么;
2.确定枚举范围:枚举边界,可能的最小值和最大值;
3.确定 check 函数写法!通常根据限定内容来写 check;check 需要先手动模拟,然后用代码实现模拟过程;
4.判断答案是否满足单调性,能否通过判断,去掉其中一半的可能性,对枚举答案进行二分。
二.二分答案 下界 常见check 补充
物资分配:(例题)
①题型描述:有 n 个城市,每个城市 a[i]个人,b 个投票箱(一个投票箱只能供一个城市使用),在满足装下所有人投票的情况下求:投票箱容量的最小值。
②题型分析:二分答案 -下界
③check 实现:判断投票箱容量为 x 是否可行,在容量为 x 的前提下计算满足装下所有投票需要的投票箱数量,判断所需投票箱数量是否<=b!
④check 实现:
⑤典型例题:投票箱 下期讲解
三.二分答案 上界
1.处理题型:求最小值最大问题;使得答案尽可能大;二分上界
2.代码实现:
注:二分答案使用前提:答案具有单调性!
四.二分答案 上界 常见 check
1.剔除元素
①题型描述:在 n 个石头中,选择去除 m 个,使得剩余石头的最短距离 最大。
②题型分析:二分答案 -上界
③check 实现:判断最短距离为 x 是否可行,在最短距离为 x 的前提下(所有距离不能小于 x),移除石头,判断移除数量是否<=m!
④check 实现:
⑤典型例题:河中跳房子 //n+2个石头 下期讲解
2.挑选元素
①题型描述:在 n 个隔间中,取出 m 个,使得取出的隔间之间最短距离 最大。②题型分析:二分答案 -上界③check 实现:判断最短距离为 x 是否可行,在最短距离为 x 的前提下(所有距离不能小于 x),挑选隔间,判断最终挑选隔间数量是否>=m!④check 实现:
⑤典型例题:K11779 Aggressive cows 好斗的奶牛 下期讲解