Loading docs/basic/binary.md +8 −8 Original line number Diff line number Diff line Loading @@ -41,6 +41,14 @@ int binary_search(int start, int end, int key) { 二分法把一个寻找极值的问题转化成一个判定的问题(用二分搜索来找这个极值)。类比枚举法,我们当时是枚举答案的可能情况,现在由于单调性,我们不再需要一个个枚举,利用二分的思路,就可以用更优的方法解决「最大值最小」、「最小值最大」。这种解法也成为是「二分答案」,常见于解题报告中。 ### STL 的二分查找 补充一个小知识点, 对于一个有序的 array 你可以使用 `std::lower_bound()` 来找到第一个大于等于你的值的数, `std::upper_bound()` 来找到第一个大于你的值的数 请注意,必须是有序数组,否则答案是错误的。 关于具体使用方法,请参见 STL 页面(施工中)。 ## 三分法 ```c++ Loading Loading @@ -101,11 +109,3 @@ $$ ### Dinkelbach 算法 Dinkelbach 算法是每次用上一轮的答案当做新的 $L$ 来输入,不断地迭代,直至答案收敛。 ### STL 的二分查找 补充一个小知识点, 对于一个有序的 array 你可以使用 `lower_bound()` 来找到第一个大于等于你的值的数, `upper_bound()` 来找到第一个大于你的值的数 请注意,必须是有序数组, 否则答案是错误的。 关于具体使用方法,请参看 STL 页面 Loading
docs/basic/binary.md +8 −8 Original line number Diff line number Diff line Loading @@ -41,6 +41,14 @@ int binary_search(int start, int end, int key) { 二分法把一个寻找极值的问题转化成一个判定的问题(用二分搜索来找这个极值)。类比枚举法,我们当时是枚举答案的可能情况,现在由于单调性,我们不再需要一个个枚举,利用二分的思路,就可以用更优的方法解决「最大值最小」、「最小值最大」。这种解法也成为是「二分答案」,常见于解题报告中。 ### STL 的二分查找 补充一个小知识点, 对于一个有序的 array 你可以使用 `std::lower_bound()` 来找到第一个大于等于你的值的数, `std::upper_bound()` 来找到第一个大于你的值的数 请注意,必须是有序数组,否则答案是错误的。 关于具体使用方法,请参见 STL 页面(施工中)。 ## 三分法 ```c++ Loading Loading @@ -101,11 +109,3 @@ $$ ### Dinkelbach 算法 Dinkelbach 算法是每次用上一轮的答案当做新的 $L$ 来输入,不断地迭代,直至答案收敛。 ### STL 的二分查找 补充一个小知识点, 对于一个有序的 array 你可以使用 `lower_bound()` 来找到第一个大于等于你的值的数, `upper_bound()` 来找到第一个大于你的值的数 请注意,必须是有序数组, 否则答案是错误的。 关于具体使用方法,请参看 STL 页面