二分模板 不会乱的

(29条消息) 不需要考虑mid+1、mid-1的二分查找模板,希望大家都能学会_二分查找如果light mid 不加1_一支彩色铅笔的博客-CSDN博客

非常好的博客,爱来自中国

二分查找为什么总是写错?_哔哩哔哩_bilibili

非常好的视频,爱来自中国

下面给出代码模板,这种二分比y总给出的模板更清晰更好理解和灵活变用

 

PS:二分的前提是序列满足连续两种不同的性质,而且我们可以根据这种性质将其分成左右两个子列

#include<iostream>
#include<cstdio>
using namespace std;
bool check(int mid)
{
    return true;
}
int main()
{
    int n;
    cin >> n;//n为序列长度
    int L = -1; int R = n;//左右指针,分别指向左右边界,注意这很重要
//while循环过后,结果是L指向左侧子集的左边界,R指向右侧子集的右边界
//注意,左右子集的划分必须是没有重合部分的,最后我们可以根据题目要求选择输出L指针还是R指针 while (L + 1 != R) { int mid = L + R >> 1; if (check(mid))//检查mid性质若其满足左边界性质,更新左侧边界逼近为mid,反之右侧边界逼近mid。 L = mid; else R = mid; } printf("%d %d", L, R); }

 

posted @ 2023-04-23 23:25  凪风sama  阅读(12)  评论(0编辑  收藏  举报