ACM
January 22, 2021

二分查找

二分查找

简介

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

——百度百科

学了二分以后给我的感觉就是很多东西都可以拿来二分,以前以为只有查找可以用二分,现在知道原来很多有范围的东西,都可以用二分来逼近答案。

整数二分

找 >= s 的数中最小的

找 < s 的数中最大的

浮点二分

浮点二分只能用记录答案方法,而且要设置一个范围使得查找能退出循环

1
2
3
4
5
6
7
8
9
10
11
12
13
const double eps = 1e-8;
double l = 0, r = n;
while (r - l > eps)
{
double mid = (l + r) / 2;
if (check (mid))
{
ans = mid;
r = mid;
}
else l = r;
}
printf ("%d", ans);

习题

A Can you solve this equation? · HDU 2199

B Dating with girls(1) · HDU 2578

C Aggressive cows · POJ 2456

D Pie · POJ 3122

E River Hopscotch · POJ 3258

F 4 Values whose Sum is 0 · POJ 2785

G Defuse the Bombs · Gym 102822D

About this Post

This post is written by OwlllOvO, licensed under CC BY-NC 4.0.

#C++#二分