当前位置:网站首页>二分(整数二分、实数二分)
二分(整数二分、实数二分)
2022-07-06 10:01:00 【Stellaris_L】
二、二分
单调序列或单调函数中的查找方式。(终止条件:l=r)
整数域二分
解析
- 注意终止边界、左右区间取舍。
(1)缩小范围:r=mid,l=mid+1,取中间值:mid=(l+r)>>1。
(2)缩小范围:l=mid,r=mid+r,取中间值:mid=(l+r+1)>>1。
第一种不会取到 r r r这个值,第二种不会取到 l l l。可以用来处理无解的情况。最初的二分区间从[1,n]扩大到[1,n+1]和[0,n],若最后二分终止在这个越界的下标上,则无解。
huangzh
- 右移运算向下取整,整数除法向零取整。
模板
例题
#include<iostream>
using namespace std;
const int N=1e5+10;
int a[N];
int n,q,k;
int main(){
cin>>n>>q;
for(int i=0;i<n;i++)cin>>a[i];
while(q--){
int k;
cin>>k;
int l=0,r=n-1;
while(l<r){
int mid=l+r>>1;
if(a[mid]>=k)r=mid;
else l=mid+1;
}
if(a[l]!=k)cout<<"-1 -1"<<endl;
else {
cout<<l<<" ";
l=0,r=n-1;
while(l<r){
int mid=l+r+1>>1;
if(a[mid]<=k)l=mid;
else r=mid-1;
}
cout<<l<<endl;
}
}
return 0;
}
实数域二分
解析
- 注意精度问题
使用循环固定次数的二分方法解决精度问题。(精度比eps高)
模板
for(int i=0;i<100;i++){
//求mid
double mid=(l+r)/2;
if(calc(mid))r=mid; else l=mid;
}
例题
- eps的精度要求
#include <iostream>
using namespace std;
int main(){
double n;
cin>>n;
double l=-10000,r=10000;
while(r-l>1e-8){
double mid=(l+r)/2;
if(mid*mid*mid>=n)r=mid;
else l=mid;
}
printf("%.6lf",l);
return 0;
}
边栏推荐
- 历史上的今天:Google 之母出生;同一天诞生的两位图灵奖先驱
- Unity粒子特效系列-闪星星的宝箱
- ASEMI整流桥DB207的导通时间与参数选择
- Virtual machine startup prompt probing EDD (edd=off to disable) error
- PySpark算子处理空间数据全解析(5): 如何在PySpark里面使用空间运算接口
- Distributed (consistency protocol) leader election (dotnext.net.cluster implements raft election)
- FlutterWeb浏览器刷新后无法回退的解决方案
- 8位MCU跑RTOS有没有意义?
- MySQL 8 sub database and table backup database shell script
- 面试突击63:MySQL 中如何去重?
猜你喜欢
李書福為何要親自掛帥造手機?
Chrome prompts the solution of "your company management" (the startup page is bound to the company's official website and cannot be modified)
JMeter interface test response data garbled
李书福为何要亲自挂帅造手机?
How to use scroll bars to dynamically adjust parameters in opencv
RepPoints:可形变卷积的进阶
It doesn't make sense without a distributed gateway
【MySQL入门】第三话 · MySQL中常见的数据类型
PyTorch 提取中间层特征?
Solution qui ne peut pas être retournée après la mise à jour du navigateur Web flutter
随机推荐
【MySQL入门】第一话 · 初入“数据库”大陆
What is the reason why the video cannot be played normally after the easycvr access device turns on the audio?
kivy教程之在 Kivy 中支持中文以构建跨平台应用程序(教程含源码)
Easy introduction to SQL (1): addition, deletion, modification and simple query
Virtual machine startup prompt probing EDD (edd=off to disable) error
OliveTin能在网页上安全运行shell命令(上)
基本磁盘与动态磁盘 RAID磁盘冗余阵列区分
远程代码执行渗透测试——B模块测试
The solution that flutterweb browser cannot be rolled back after refreshing
面试突击62:group by 有哪些注意事项?
Pytest learning ----- pytest confitest of interface automation test Py file details
PyTorch 提取中间层特征?
Getting started with pytest ----- test case rules
Hongmeng introduction and development environment construction
Mysqlimport imports data files into the database
Summary of Android interview questions of Dachang in 2022 (I) (including answers)
Kali2021 installation and basic configuration
开源与安全的“冰与火之歌”
Manifest of SAP ui5 framework json
Quick start of Hongmeng system