Loading docs/basic/binary.md +4 −4 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ int find(int x) { if (check(mid)) //如果可行 l = mid; //升高锯片高度 else r = mid; //否则降低叶片高度 r = mid; //否则降低锯片高度 } return l; //返回左边值 } Loading docs/basic/construction.md +2 −2 Original line number Diff line number Diff line Loading @@ -22,9 +22,9 @@ 样例二已经暴露了此题的本质~~(复读机~~ 显然 $n,n-1,n(n-1)$ 为一组合法解。特殊地,当 $n=1$ 时,无解。 显然 $n,n+1,n(n+1)$ 为一组合法解。特殊地,当 $n=1$ 时,无解,这是因为 $n+1$ 与 $n(n+1)$ 此时相等。 至于构造思路是怎么产生的,大概就是观察样例加上一点点数感了吧。此题对于数学直觉较强的人来说并不难 至于构造思路是怎么产生的,大概就是观察样例加上一点点数感了吧。此题对于数学直觉较强的人来说并不难。 ### Example 2 Loading docs/basic/divide-and-conquer.md +5 −3 Original line number Diff line number Diff line Loading @@ -183,9 +183,7 @@ LeetCode 有递归专题练习,[点这里去做题](https://leetcode.com/explo ### 递归优化 先来一道例题:[三连击](https://www.luogu.org/problemnew/show/P1618)。 这道题朴素的递归写法只能得到 25 分,因为递归次数太多,所以超时。 比较 naive 的递归实现可能递归次数太多,容易超时。 怎么优化呢?详见[搜索优化](/search/optimization)和[记忆化搜索](/dp/memo/)。 Loading Loading @@ -215,3 +213,7 @@ void merge_sort(一个数组) { 好了,这个算法也就这样了,完全没有任何难度。记住之前说的,相信函数的能力,传给他半个数组,那么这半个数组就已经被排好了。而且你会发现这不就是个二叉树遍历模板吗?为什么是后序遍历?因为我们分治算法的套路是 **分解 -> 解决(触底) -> 合并(回溯)** 啊,先左右分解,再处理合并,回溯就是在退栈,就相当于后序遍历了。至于`merge`函数,参考两个有序链表的合并,简直一模一样。 LeetCode 上有分治算法的专项练习,[点这里去做题](https://leetcode.com/tag/divide-and-conquer/) 本文主要贡献者:[fudonglai](https://github.com/fudonglai) No newline at end of file docs/basic/expression.md +1 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,6 @@ int calc(const std::string &s) { // 计算转换好的后缀表达式 ## 习题 1. [表达式求值(NOIP2013)](https://www.luogu.org/problemnew/show/P1981) 1. [表达式求值(NOIP2013)](https://vijos.org/p/1849) 2. [后缀表达式](https://www.luogu.org/problemnew/show/P1449) 3. [Transform the Expression](https://www.spoj.com/problems/ONP/) docs/basic/greedy.md +1 −1 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) 就是将输入数组差分后排序模拟求值。 然而有些时候很难直接一下子看出排序方法,比如 [Luogu P1080 国王游戏](https://www.luogu.org/problemnew/show/P1080) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 ```cpp struct { Loading Loading
docs/basic/binary.md +4 −4 Original line number Diff line number Diff line Loading @@ -80,7 +80,7 @@ int find(int x) { if (check(mid)) //如果可行 l = mid; //升高锯片高度 else r = mid; //否则降低叶片高度 r = mid; //否则降低锯片高度 } return l; //返回左边值 } Loading
docs/basic/construction.md +2 −2 Original line number Diff line number Diff line Loading @@ -22,9 +22,9 @@ 样例二已经暴露了此题的本质~~(复读机~~ 显然 $n,n-1,n(n-1)$ 为一组合法解。特殊地,当 $n=1$ 时,无解。 显然 $n,n+1,n(n+1)$ 为一组合法解。特殊地,当 $n=1$ 时,无解,这是因为 $n+1$ 与 $n(n+1)$ 此时相等。 至于构造思路是怎么产生的,大概就是观察样例加上一点点数感了吧。此题对于数学直觉较强的人来说并不难 至于构造思路是怎么产生的,大概就是观察样例加上一点点数感了吧。此题对于数学直觉较强的人来说并不难。 ### Example 2 Loading
docs/basic/divide-and-conquer.md +5 −3 Original line number Diff line number Diff line Loading @@ -183,9 +183,7 @@ LeetCode 有递归专题练习,[点这里去做题](https://leetcode.com/explo ### 递归优化 先来一道例题:[三连击](https://www.luogu.org/problemnew/show/P1618)。 这道题朴素的递归写法只能得到 25 分,因为递归次数太多,所以超时。 比较 naive 的递归实现可能递归次数太多,容易超时。 怎么优化呢?详见[搜索优化](/search/optimization)和[记忆化搜索](/dp/memo/)。 Loading Loading @@ -215,3 +213,7 @@ void merge_sort(一个数组) { 好了,这个算法也就这样了,完全没有任何难度。记住之前说的,相信函数的能力,传给他半个数组,那么这半个数组就已经被排好了。而且你会发现这不就是个二叉树遍历模板吗?为什么是后序遍历?因为我们分治算法的套路是 **分解 -> 解决(触底) -> 合并(回溯)** 啊,先左右分解,再处理合并,回溯就是在退栈,就相当于后序遍历了。至于`merge`函数,参考两个有序链表的合并,简直一模一样。 LeetCode 上有分治算法的专项练习,[点这里去做题](https://leetcode.com/tag/divide-and-conquer/) 本文主要贡献者:[fudonglai](https://github.com/fudonglai) No newline at end of file
docs/basic/expression.md +1 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,6 @@ int calc(const std::string &s) { // 计算转换好的后缀表达式 ## 习题 1. [表达式求值(NOIP2013)](https://www.luogu.org/problemnew/show/P1981) 1. [表达式求值(NOIP2013)](https://vijos.org/p/1849) 2. [后缀表达式](https://www.luogu.org/problemnew/show/P1449) 3. [Transform the Expression](https://www.spoj.com/problems/ONP/)
docs/basic/greedy.md +1 −1 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) 就是将输入数组差分后排序模拟求值。 然而有些时候很难直接一下子看出排序方法,比如 [Luogu P1080 国王游戏](https://www.luogu.org/problemnew/show/P1080) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 然而有些时候很难直接一下子看出排序方法,比如 [NOIP 2012 国王游戏](https://vijos.org/p/1779) 就很容易凭直觉而错误地以 $a$ 或 $b$ 为关键字排序,过样例之后提交就发现 WA 了 QAQ。一个~~众所周知的~~常见办法就是尝试交换数组相邻的两个元素来 **推导** 出正确的排序方法。我们假设这题输入的俩个数用一个结构体来保存 ```cpp struct { Loading