首页 > 其他分享 >二分——lower_bound&upper_bound写法

二分——lower_bound&upper_bound写法

时间:2023-12-23 22:48:49浏览次数:28  
标签:upper lower ll mid bound left

底层实现

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll lower_bound(vector<ll>& nums,ll x)
{
	ll left=0;
	ll right=nums.size()-1;
	while(left<=right) 
	{
		ll mid=left+(right-left)/2;
		if(x>nums[mid])
			left=mid+1;
		else
			right=mid-1;	
	}
	return left;
}
ll upper_bound(vector<ll>& nums,ll x)
{
	ll left=0;
	ll right=nums.size()-1;
	while(left<=right)
	{
		ll mid=left+(right-left)/2;
		if(x>=nums[mid])
			left=mid+1;
		else
			right=mid-1;	
	}
	return left;
}
int main(){return 0;}

用法

  • lower_bound()

    1. 返回值是第一个大于/等于所要查找的元素地址
    2. 适用于非降序排列
    3. 格式:lower_bound(起始地址,末尾地址,查找元素)
  • upper_bound()

    与 lower_bound() 同理。

示例(lower_bound(),upper_bound()同理)

ll a[]={1,2,3};
cout<<lower_bound(a,a+3,2)-a;
vector<int> v;
v.push_back(1),v.push_back(2),v.push_back(3);
cout<<lower_bound(v.begin(),v.end(),2)-v.begin();

标签:upper,lower,ll,mid,bound,left
From: https://www.cnblogs.com/SCAtlas-lxy23/p/17923763.html

相关文章

  • 【STL】 lower_bound和upper_bound
    在STL提供的 algorithm 头文件中,提供了两个函数:upper_bound 和 lower_bound,这俩函数功能”类似“,但并不相同。lower_bound(begin,end,val)在有序的数组连续地址的[begin,end)内找到第一个位置并返回其地址,使得val插入这个位置前面,数组仍然保持有序upper_bound(begin,end,......
  • 无涯教程-Java - String toUpperCase()函数
    将字符串转成大写字母,这等效于调用toUpperCase(Locale.getDefault())。StringtoUpperCase()-语法publicStringtoUpperCase()StringtoUpperCase()-返回值它返回字符串,并转换为大写。StringtoUpperCase()-示例importjava.io.*;publicclassTest{publics......
  • 无涯教程-Java - String toLowerCase(Locale locale)函数
    如果指定Locale则根据Locale将此String中的所有字符转换为小写,否则调用toLowerCase(Locale.getDefault())默认方法。StringtoLowerCase-语法publicStringtoLowerCase(Localelocale)StringtoLowerCase-返回值它返回转换为小写字母的字符串。StringtoLowerCase-示......
  • 无涯教程-Java - String toLowerCase()函数
    将此String中的所有字符转换为小写,这等同于调用toLowerCase(Locale.getDefault())。StringtoLowerCase()-语法publicStringtoLowerCase()StringtoLowerCase()-返回值它返回转换为小写字母的字符串。StringtoLowerCase()-示例importjava.io.*;publicclassTest......
  • 无涯教程-Java - toUpperCase()函数
    该方法返回指定的char值的大写形式。toUpperCase()-语法chartoUpperCase(charch)这是参数的详细信息-ch  - 原始字符类型。toUpperCase()-返回值此方法返回指定的char值的大写形式。toUpperCase()-示例publicclassTest{publicstaticvoidmain(Str......
  • Predict potential miRNA-disease associations based on bounded nuclear norm regul
    PredictpotentialmiRNA-diseaseassociationsbasedonboundednuclearnormregularizationYidongRao 1, MinzhuXie 1, HaoWang 1Affiliations expandPMID: 36072658 PMCID: PMC9441603 DOI: 10.3389/fgene.2022.978975 SigninFreePMCa......
  • LOEUF (the loss-of-function observed/expected upper bound fraction) 和 pLI (prob
    LOEUF(theloss-of-functionobserved/expectedupperboundfraction):LOEUFisaconservativeestimateofevolutionaryselectionagainstdisease-causingvariantsbasedontheupperlimitoftheconfidenceintervalfortheobserved/expectedpLoFmutationra......
  • mybatisPlus报orq.apache ibatisbinding.BindingException: Invalid bound statement
     出现这种问题依次检查下列内容1.检查xml映射文件中标签绑定包名地址是否正确(即namespace的值)2.检查xxxMapper接口中的方法,对应xml映射文件中是否有3.检查标签中的resultType是否与xxxMapper接口中的方法返回值类型一致,若一个是对象一个是集合,那也会报错~4.检查yml配置文件中......
  • CF1423G Growing flowers
    我永远喜欢数据结构。洛谷CF给出长度为\(n\)的序列\(a_1\sima_n\),有\(q\)次操作:\(1\texttt{}l\texttt{}r\texttt{}c\),对于\(i\in[l,r]\),执行\(a_i\leftarrowc\)。\(2\texttt{}x\),查询所有长度为\(x\)的子区间中数的种数和。即:\[\sum\limits_{i=1}^{n......
  • 2023 合肥站 热身赛 B Problem F. Flower’s Land 换根dp 依赖背包
    传送门。求出包含某个点连通块大小为K的权值和最大值。钦定1为根节点,只求根节点的答案,其实是一个依赖性01背包问题可以\(nk\)的时间内解决。考虑进行换根操作,由于背包是取max的背包没办法进行背包的删除,然而取前后缀背包背包的合并为\(k^2\)复杂度过高。当时还有一个想法是点......