Loading docs/basic/binary.md +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ int binary_search(int start, int end, int key) { 请注意,必须是有序数组,否则答案是错误的。 关于具体使用方法,请参见 [STL 页面](/ds/stl/) 。 关于具体使用方法,请参见 [STL 页面](../lang/csl/index.md) 。 ### 二分答案 Loading docs/basic/divide-and-conquer.md +1 −1 Original line number Diff line number Diff line Loading @@ -177,7 +177,7 @@ LeetCode 有递归专题练习, [点这里去做题](https://leetcode.com/expl 比较 naive 的递归实现可能递归次数太多,容易超时。 怎么优化呢?详见 [搜索优化](/search/opt) 和 [记忆化搜索](/dp/memo/) 。 怎么优化呢?详见 [搜索优化](../search/opt.md) 和 [记忆化搜索](../dp/memo.md) 。 ## 分治算法 Loading docs/basic/greedy.md +2 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ 有些题的排序方法非常显然,如 [Luogu P1209\[USACO1.3\]修理牛棚 Barn Repair](https://www.luogu.org/problemnew/show/P1209) 就是将输入数组差分后排序模拟求值。 然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 ```cpp struct { Loading Loading @@ -57,7 +57,7 @@ $$ \frac{m \cdot v[i + 1].a} {v[i].b} $$ 如果交前更优当且仅当 如果交换前更优当且仅当 $$ \max (\frac{m} {v[i].b}, \frac{m \times v[i].a} {v[i + 1].b}) < \max (\frac{m} {v[i + 1].b}, \frac{m \times v[i + 1].a} {v[i].b}) Loading docs/basic/heap-sort.md +1 −1 Original line number Diff line number Diff line 对所有记录建 [堆](/ds/heap/) 对所有记录建 [堆](../ds/heap.md) 每次取出堆顶元素,就可以依次得到排好序的序列。 Loading docs/basic/merge-sort.md +2 −2 Original line number Diff line number Diff line ## 算法 归并排序是一种采用了 [分治](/basic/divide-and-conquer) 思想的排序算法,其本质是一种 [CDQ 分治](/misc/cdq-divide) 。 归并排序是一种采用了 [分治](./divide-and-conquer.md) 思想的排序算法,其本质是一种 [CDQ 分治](../misc/cdq-divide.md) 。 归并排序分为三个过程: Loading Loading @@ -77,7 +77,7 @@ public class Merge { 所谓逆序对,就是满足 $a_{i} > a_{j}$ 且 $i < j$ 的数对 $(i, j)$ 。 可以用 [树状数组](/ds/bit) 、 [线段树](/ds/segment/) 等数据结构来求,也可以用归并排序来求。 可以用 [树状数组](../ds/bit.md) 、 [线段树](../ds/seg.md) 等数据结构来求,也可以用归并排序来求。 具体来说,上面归并排序中间注释掉的 `ans += mid - p` 就是在统计逆序对个数。 Loading Loading
docs/basic/binary.md +1 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,7 @@ int binary_search(int start, int end, int key) { 请注意,必须是有序数组,否则答案是错误的。 关于具体使用方法,请参见 [STL 页面](/ds/stl/) 。 关于具体使用方法,请参见 [STL 页面](../lang/csl/index.md) 。 ### 二分答案 Loading
docs/basic/divide-and-conquer.md +1 −1 Original line number Diff line number Diff line Loading @@ -177,7 +177,7 @@ LeetCode 有递归专题练习, [点这里去做题](https://leetcode.com/expl 比较 naive 的递归实现可能递归次数太多,容易超时。 怎么优化呢?详见 [搜索优化](/search/opt) 和 [记忆化搜索](/dp/memo/) 。 怎么优化呢?详见 [搜索优化](../search/opt.md) 和 [记忆化搜索](../dp/memo.md) 。 ## 分治算法 Loading
docs/basic/greedy.md +2 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,7 @@ 有些题的排序方法非常显然,如 [Luogu P1209\[USACO1.3\]修理牛棚 Barn Repair](https://www.luogu.org/problemnew/show/P1209) 就是将输入数组差分后排序模拟求值。 然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 ```cpp struct { Loading Loading @@ -57,7 +57,7 @@ $$ \frac{m \cdot v[i + 1].a} {v[i].b} $$ 如果交前更优当且仅当 如果交换前更优当且仅当 $$ \max (\frac{m} {v[i].b}, \frac{m \times v[i].a} {v[i + 1].b}) < \max (\frac{m} {v[i + 1].b}, \frac{m \times v[i + 1].a} {v[i].b}) Loading
docs/basic/heap-sort.md +1 −1 Original line number Diff line number Diff line 对所有记录建 [堆](/ds/heap/) 对所有记录建 [堆](../ds/heap.md) 每次取出堆顶元素,就可以依次得到排好序的序列。 Loading
docs/basic/merge-sort.md +2 −2 Original line number Diff line number Diff line ## 算法 归并排序是一种采用了 [分治](/basic/divide-and-conquer) 思想的排序算法,其本质是一种 [CDQ 分治](/misc/cdq-divide) 。 归并排序是一种采用了 [分治](./divide-and-conquer.md) 思想的排序算法,其本质是一种 [CDQ 分治](../misc/cdq-divide.md) 。 归并排序分为三个过程: Loading Loading @@ -77,7 +77,7 @@ public class Merge { 所谓逆序对,就是满足 $a_{i} > a_{j}$ 且 $i < j$ 的数对 $(i, j)$ 。 可以用 [树状数组](/ds/bit) 、 [线段树](/ds/segment/) 等数据结构来求,也可以用归并排序来求。 可以用 [树状数组](../ds/bit.md) 、 [线段树](../ds/seg.md) 等数据结构来求,也可以用归并排序来求。 具体来说,上面归并排序中间注释掉的 `ans += mid - p` 就是在统计逆序对个数。 Loading