Unverified Commit 699c11b2 authored by ir1d's avatar ir1d Committed by GitHub
Browse files

Update binary.md

parent b40b1c98
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -41,6 +41,14 @@ int binary_search(int start, int end, int key) {

二分法把一个寻找极值的问题转化成一个判定的问题(用二分搜索来找这个极值)。类比枚举法,我们当时是枚举答案的可能情况,现在由于单调性,我们不再需要一个个枚举,利用二分的思路,就可以用更优的方法解决「最大值最小」、「最小值最大」。这种解法也成为是「二分答案」,常见于解题报告中。

### STL 的二分查找

补充一个小知识点, 对于一个有序的 array 你可以使用 `std::lower_bound()` 来找到第一个大于等于你的值的数, `std::upper_bound()` 来找到第一个大于你的值的数

请注意,必须是有序数组,否则答案是错误的。

关于具体使用方法,请参见 STL 页面(施工中)。

## 三分法

```c++
@@ -101,11 +109,3 @@ $$
### Dinkelbach 算法

Dinkelbach 算法是每次用上一轮的答案当做新的 $L$ 来输入,不断地迭代,直至答案收敛。

### STL 的二分查找

补充一个小知识点, 对于一个有序的 array 你可以使用 `lower_bound()` 来找到第一个大于等于你的值的数, `upper_bound()` 来找到第一个大于你的值的数

请注意,必须是有序数组, 否则答案是错误的。

关于具体使用方法,请参看 STL 页面