首页 > 编程语言 >AcWing整数二分算法模板

AcWing整数二分算法模板

时间:2023-02-07 04:33:31浏览次数:55  
标签:二分 return int mid else while check 模板 AcWing

原链接

bool check(int x) {/* ... */} // 检查x是否满足某种性质

// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:
int bsearch_1(int l, int r)
{
    while (l < r)
    {
        int mid = l + r >> 1;
        if (check(mid)) r = mid;    // check()判断mid是否满足性质
        else l = mid + 1;
    }
    return l;
}
// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用:
int bsearch_2(int l, int r)
{
    while (l < r)
    {
        int mid = l + r + 1 >> 1;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    return l;
}

标签:二分,return,int,mid,else,while,check,模板,AcWing
From: https://www.cnblogs.com/chuixulvcao/p/17097150.html

相关文章

  • LeetCode搜索旋转排序数组(/二分查找)
    原题解题目约束题解classSolution{public:intsearch(vector<int>&nums,inttarget){intn=(int)nums.size();if(!n){......
  • 类模板与板书对象2
    #include<iostream>#include<vector>#include<algorithm>usingnamespacestd;template<typenamenumberType>structIsMultiple{numberTypem_Divisor;//几的......
  • 三数之和|排序以去重,双指针结合二分思想
    给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返回所有......
  • 【Appium】python利用Template生成对象模板_appium_元素定位/操作
    UI自动化中用PageObject设计模式就会发现page元素定位代码基本重复,复制黏贴,修改,所以就想到运用模板方式,批量生成page,同理也能批量生成handle。有模板,利用配置文件ini获取......
  • AcWing 791. 高精度加法C++数组实现
    高精度加法a,b均为正整数#include<iostream>usingnamespacestd;constintN=100010;intA[N],B[N],C[N];intAdd(inta[],intb[],intc[],intcnt){......
  • 模板模式
    /*模板模式:解决某类事情的步骤有些是固定的,有些是会发生变化的,那么这时候我们可以为这类事情提供一个模板代码,从而提高效率。需求;编写一个计算程序运行时间的模板。模板......
  • Acwing 92
    回溯#include<iostream>usingnamespacestd;constintN=16;boolrecord[N];voidselection(intstart,intend){if(start>end){//到达上届f......
  • 【算法训练】二分查找
    二分查找二分查找建立在待查找元素有序的前提上例题题目描述输入N个学生的学号,然后查询输入输入的第一行为N,即学生的个数(N<=1000)接下来的N行包括N个学生的信息,信息格式......
  • AcWing第 88 场周赛
    AcWing4800.下一个签到#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){intx;cin>>x;autof=[](intx){set<int>a;......
  • 批量通过模板打印
    模版表名Templatesheet25数据列表名sheet1打印程序SubPrintLabel()WithThisWorkbook.Sheets("Sheet1")limitmax=.Range("B10000").End(xlUp).Row......