Unverified Commit ae9e77eb authored by Sshwy's avatar Sshwy Committed by GitHub
Browse files

Merge branch 'master' into mobius

parents aac78a3c bea88460
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
## 算法

快速排序是 [分治](/basic/divide-and-conquer) 地来将一个数组排序。
快速排序是 [分治](./divide-and-conquer.md) 地来将一个数组排序。

快速排序分为三个过程:

+1 −1
Original line number Diff line number Diff line
DAG 即 [有向无环图](/graph/dag) ,一些实际问题中的二元关系都可使用 DAG 来建模。
DAG 即 [有向无环图](../graph/dag.md) ,一些实际问题中的二元关系都可使用 DAG 来建模。

## 例子

+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ $$
还有一点需要注意的是,很容易写出这样的错误核心代码:

```cpp
for (int i = 1; i <= W; i++)
for (int i = 1; i <= n; i++)
  for (int l = 0; l <= W - w[i]; l++)
    f[l + w[i]] = max(f[l] + v[i], f[l + w[i]]);
// 由 f[i][l + w[i]] = max(max(f[i - 1][l + w[i]],f[i - 1][l] + w[i]),f[i][l +
+3 −7
Original line number Diff line number Diff line
> 想体验把暴搜改改就是正解的快感吗?想体验状压 dp 看似状态多到爆炸实际一跑却嗷嗷快(实际有效的状态数很少)的荣耀吗?记忆化搜索,符合您的需求!只要 998 , 记忆化搜索带回家!记忆化搜索,记忆化搜索,再说一遍,记忆化搜索!

* * *

## 记忆化搜索是啥

好,就[NOIP 2005 采药](https://vijos.org/p/1104) 为例:
[NOIP 2005 采药](https://vijos.org/p/1104) 为例:

> 山洞里有 M 株不同的草药,采每一株都需要一些时间 $t_i$ ,每一株也有它自身的价值 $v_i$ 。我会给你一段时间 T,在这段时间里,你可以采到一些草药。让采到的草药的总价值最大。

我不会动态规划,只会搜索,我就会直接写一个粗暴的 [DFS](/search/dfs) :
我不会动态规划,只会搜索,我就会直接写一个粗暴的 [DFS](../search/dfs.md) :

-   注:为了方便食用,本文中所有代码省略头文件

@@ -201,7 +197,7 @@ int main() {

### 方法 II

1.  写出这道题的暴搜程序(最好是 [dfs](/search/dfs) )
1.  写出这道题的暴搜程序(最好是 [dfs](../search/dfs.md) )
2.  将这个 dfs 改成 "无需外部变量" 的 dfs
3.  添加记忆化数组

+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ author: TrisolarisHD, hsfzLZH1, greyqz, Ir1d, abc1763613206, tigerruanyifan

## 介绍

??? note " 例题[经典问题 - 多重背包](/dp/knapsack/#_3)"
??? note " 例题[经典问题 - 多重背包](../knapsack.md#_2)"
    题目大意:有 $n$ 种物品,每种物品有 $a_i$ 件,购买一件这种物品的费用为 $c_i$ ,价值为 $v_i$ 。有一个容量为 $t$ 的背包,现在让你找到最优的一种方案,使得装入背包的物品的总价值最大。

考虑常规的动规方式,定义 $f_{i,j}$ 为当前考虑到第 $i$ 个物品,背包容量为 $j$ 所能获得的最大价值。
Loading