\r
by $\color{Gray}InterestingLSY$ (菜到发灰)\r
\r
-由于我讲的比较磨叽,兜售目录一份,dalao们可以选择自己喜欢的部分看\r
-\r
-## 目录:\r
-\r
-- 记忆化搜索是啥\r
-\r
-- 记忆化搜索和动态规划有啥关系\r
-\r
-- 记忆化搜索的优缺点\r
-\r
-- 记忆化搜索的注意事项\r
-\r
## 1.记忆化搜索是啥\r
\r
好,就以[这道题](https://www.luogu.org/problemnew/show/P1048)为例,~~假设我现在特别菜~~我本来就特别菜,不会动态规划,只会搜索,我就会直接写一个粗暴的 $DFS$ :\r
\r
答案很简单:\r
\r
-### 返回值!\r
+**返回值!**\r
\r
此时 $dfs(pos,tleft)$ 返回在时间$tleft$内采集 **后**$pos$个草药,能获得的最大收益\r
\r
\r
然后我非常无聊,将所有dfs的返回值都记录下来,竟然发现......\r
\r
-### 震惊,对于相同的pos和tleft,dfs的返回值总是相同的!\r
+**震惊,对于相同的pos和tleft,dfs的返回值总是相同的!**\r
\r
想一想也不奇怪,因为我们的dfs没有依赖任何外部变量.\r
\r
\r
开个数组 $mem$ ,记录下来每个 $dfs(pos,tleft)$ 的返回值.刚开始把 $mem$ 中每个值都设成 $-1$ (代表没访问过). 每次刚刚进入一个dfs前(我们的dfs是递归调用的嘛),都检测 $mem[pos][tleft]$ 是否为 $-1$ ,如果是就正常执行并把答案记录到 $mem$ 中, 否则?\r
\r
-### 直接返回 $mem$ 中的值!\r
+**直接返回 $mem$ 中的值!**\r
\r
```cpp\r
int n,t;\r
\r
好我们 yy 出了记忆化搜索\r
\r
-### 总结一下记忆化搜索是啥:\r
+#### 总结一下记忆化搜索是啥:\r
\r
- 不依赖任何**外部变量**\r
\r
\r
## 如有疑问或质疑,请留下评论或私信我\r
\r
-### questions are welcome\r
+** questions are welcome **\r