当前位置: 首页 > news >正文

二分函数

1.正常的整数(有序数列-》递增)的二分

> #include<iostream>
> using namespace std;
> const int N=1e5+10;
> int arr[N];
> int n;
> int binarysearch1(int x)//大于等于x的最大数字>=x  first右逼近
> {
>     int l=0,r=n-1;
>     while(l<r)
>     {
>         int mid=(l+r)>>1;
>         if(arr[mid]>=x)r=mid;
>         else l=mid+1;
>     }
>     return l;
> }
> int binarysearch2(int x)//小于等于x的最小数字<=x  first左逼近
> {
>     int l=0,r=n-1;
>     while(l<r)
>     {
>         int mid=(l+r+1)>>1;
>         if(arr[mid]<=x)l=mid;
>         else r=mid-1;
>     }
>     return r;
> }
> int main()
> {
>     cout<<"输出数字个数:";
>     cin>>n;
>     puts("");
>     cout<<"输出数字:";
>     for(int i=0;i<n;i++)
>     {
>         cin>>arr[i];
>     }
>     int target;
>     cout<<"输出目标数字:";
>     cin>>target;
>     int l=binarysearch1(target);
>     int r=binarysearch2(target);
>     if(arr[l]!=target)cout<<"-1 -1"<<endl;
>     else cout<<l<<" "<<r<<endl;
>     return 0;
> }

2.浮点数二分
lg:解方程

//求一个浮点数的三次方根y<=10000
#include<iostream>
#include<iomanip>
using namespace std;
double l,r;
double find(double y)
{double l=-100,r=100;while(r-l>1e-8){double mid=(l+r)/2;if(mid*mid*mid<=y)l=mid;else r=mid;}
return l;}
int main()
{double y;;cin>>y;
cout<<find(y);return 0;}

3.库函数自带的二分函数(upper_bound / lower_bound)
// 找值为 target 的位置
指针 = upper_bound(arr, arr + n, target);
arr:数组起始位置
arr+n:数组结束位置的下一个(固定写法)
target:你要找的目标数字
lower_bound → 找 第一个 ≥ 目标值 的位置
左边界
upper_bound → 找 第一个 > 目标值 的位置
右边界
样例

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int arr[N];int main()
{    int n,k;cin>>n>>k;for(int i=0;i<n;i++) cin>>arr[i];sort(arr, arr+n); // 必须排序!int maxres = 0;for(int l=0; l<n; l++){int target = arr[l] + k;// 二分找第一个大于target的位置int r = upper_bound(arr, arr+n, target) - arr;// 区间长度 = r - lmaxres = max(maxres, r - l);}cout << maxres;
}
http://www.jsqmd.com/news/640352/

相关文章:

  • 蓝桥杯结章---
  • 别再乱接电阻了!手把手教你搞定CAN总线多节点组网(直线型/手拉手型实战避坑)
  • Motrix WebExtension:让专业下载管理器接管你的浏览器下载,告别龟速时代
  • 2026.04.07 作业- # AT_abc452_d [ABC452D] No-Subsequence Substring
  • 2026 三重四极杆ICP-MS厂家有哪些,哪个口碑好实力强?进口电感耦合等离子体质谱仪推荐品牌 - 品牌推荐大师1
  • 【数据库】索引创建原则、索引失效以及sql优化
  • Proxmox VE管理神器:pvetools一键脚本让你的虚拟化运维效率翻倍
  • 2000-2023年各省农用塑料薄膜使用量和农用柴油和农药使用量数据
  • 毕业论文“终局之战”:百考通AI,如何用“查降一体”思维助你高效通关?
  • 工业储罐厂家推荐与采购指南(2026 深度选型版) - 深度智识库
  • 全文降AI的技术原理解读:工具是怎么做到整篇降率的 - 我要发一区
  • 全文降AI的好处:从知网检测算法角度解读为什么要全文处理 - 我要发一区
  • 突破Cursor Pro限制:三步实现无限使用的开源解决方案
  • LaTeX术语表(nomencl)从入门到精通:解决排序混乱、编译失败的常见坑点指南
  • 5分钟快速上手:Blender PSK/PSA插件终极指南
  • 2025网盘下载终极解决方案:八大平台直链解析助手完整使用指南
  • FanControl终极配置指南:5分钟掌握Windows风扇控制神器
  • 第一篇:微信云开发宠物上门预约小程序:核心架构与实现思路
  • 2026年户外路灯厂家推荐:市政路灯/农村用太阳能路灯/双臂路灯专业供应商精选 - 品牌推荐官
  • Ubuntu下Forge服务器session.lock锁文件残留导致MC1.21.1启动失败的排查与解决
  • js逆向05_ob混淆花指令,平坦流,某麦网(突破ob混淆寻找拦截器)
  • CVPR 2025|渐进聚焦注意力:重塑Transformer超分效率,实现高精度与低开销的平衡
  • 【OSG学习笔记】Day 45: osg::Camera::DrawCallback (抓取图片)
  • 阿里的1000亿美金野心与美团的243亿亏损阴影
  • 英雄联盟智能助手:League Akari 终极使用指南
  • FUTURE POLICE语音模型Ubuntu 20.04部署全流程详解
  • 微信小程序文件缓存优化:从基础到高级的完整实践指南
  • Agent智能体任务规划文档解析:BERT分割理解复杂指令步骤
  • 不务正业系列9:用A-Frame构建你的第一个WebVR互动场景
  • 【OSG学习笔记】Day 46: CameraManipulator(相机操控器)