OSDN Git Service

style: fix style
authorIr1d <sirius.caffrey@gmail.com>
Thu, 23 Aug 2018 07:53:32 +0000 (15:53 +0800)
committerIr1d <sirius.caffrey@gmail.com>
Thu, 23 Aug 2018 07:53:32 +0000 (15:53 +0800)
docs/dp/memo.md

index 24d844e..aa60d1f 100644 (file)
@@ -2,11 +2,11 @@
 \r
 by $\color{Gray}InterestingLSY$ (菜到发灰)\r
 \r
-## 1.记忆化搜索是啥\r
+## 1. 记忆化搜索是啥\r
 \r
-好,就以[这道题](https://www.luogu.org/problemnew/show/P1048)为例,~~假设我现在特别菜~~我本来就特别菜,不会动态规划,只会搜索,我就会直接写一个粗暴的 $DFS$ :\r
+好,就以 [这道题](https://www.luogu.org/problemnew/show/P1048) 为例,我不会动态规划,只会搜索,我就会直接写一个粗暴的 [DFS](/search/dfs) :\r
 \r
-*注:为了方便食用,本文中所有代码省略头文件*\r
+* 注: 为了方便食用, 本文中所有代码省略头文件 *\r
 \r
 ```cpp\r
 int n,t;\r
@@ -32,17 +32,17 @@ int main(){
 ```\r
 这就是个十分智障的大暴搜是吧......\r
 \r
-emmmmmm....... $\color{Red}30$分\r
+emmmmmm....... $\color{Red}30$ \r
 \r
-然后我心血来潮,想不借助任何"外部变量"(就是dfs函数外且**值随dfs运行而改变的变量**),比如ans\r
+然后我心血来潮, 想不借助任何 "外部变量"(就是 dfs 函数外且 ** 值随 dfs 运行而改变的变量 **), 比如 ans\r
 \r
-把ans删了之后就有一个问题: 我们拿什么来记录答案?\r
+把 ans 删了之后就有一个问题: 我们拿什么来记录答案?\r
 \r
 答案很简单:\r
 \r
-**返回值!**\r
+** 返回值!**\r
 \r
-此时 $dfs(pos,tleft)$ 返回在时间$tleft$内采集 **后**$pos$个草药,能获得的最大收益\r
+此时 $dfs(pos,tleft)$ 返回在时间 $tleft$ 内采集 ** 后 **$pos$ 个草药, 能获得的最大收益\r
 \r
 不理解就看看代码吧:\r
 \r
@@ -67,23 +67,23 @@ int main(){
 }\r
 ```\r
 \r
-~~emmmmmm....... 还是$\color{Red}30$分~~\r
+~~emmmmmm....... 还是 $\color{Red}30$ 分~~\r
 \r
-但这个时候,我们的程序已经不依赖任何外部变量了.\r
+但这个时候, 我们的程序已经不依赖任何外部变量了.\r
 \r
-然后我非常无聊,将所有dfs的返回值都记录下来,竟然发现......\r
+然后我非常无聊, 将所有 dfs 的返回值都记录下来, 竟然发现......\r
 \r
-**震惊,对于相同的pos和tleft,dfs的返回值总是相同的!**\r
+** 震惊, 对于相同的 pos 和 tleft,dfs 的返回值总是相同的!**\r
 \r
-想一想也不奇怪,因为我们的dfs没有依赖任何外部变量.\r
+想一想也不奇怪, 因为我们的 dfs 没有依赖任何外部变量.\r
 \r
-旁白:像 $tcost[103]$,$mget[103]$ 这种东西不算是外部变量,因为她们在dfs过程中不变.\r
+旁白: 像 $tcost[103]$,$mget[103]$ 这种东西不算是外部变量, 因为她们在 dfs 过程中不变.\r
 \r
 然后?\r
 \r
-开个数组 $mem$ ,记录下来每个 $dfs(pos,tleft)$ 的返回值.刚开始把 $mem$ 中每个值都设成 $-1$ (代表没访问过). 每次刚刚进入一个dfs前(我们的dfs是递归调用的嘛),都检测 $mem[pos][tleft]$ 是否为 $-1$ ,如果是就正常执行并把答案记录到 $mem$ 中, 否则?\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
@@ -108,33 +108,33 @@ int main(){
     return 0;\r
 }\r
 ```\r
-此时 $mem$ 的意义与dfs相同:\r
+此时 $mem$ 的意义与 dfs 相同:\r
 \r
-> 在时间$tleft$内采集 **后**$pos$个草药,能获得的最大收益\r
+> 在时间 $tleft$ 内采集 **后** $pos$ 个草药, 能获得的最大收益\r
 \r
-这能ac?\r
+这能 ac?\r
 \r
-能.**这就是"采药"那题的AC代码**\r
+能.** 这就是 "采药" 那题的 AC 代码 **\r
 \r
 好我们 yy 出了记忆化搜索\r
 \r
 #### 总结一下记忆化搜索是啥:\r
 \r
-- 不依赖任何**外部变量**\r
+- 不依赖任何 ** 外部变量 **\r
 \r
-- 答案以返回值的形式存在,而不能以参数的形式存在(就是不能将dfs定义成 dfs( int pos , int tleft , int nowans ),这里面的nowans不符合要求.\r
+- 答案以返回值的形式存在, 而不能以参数的形式存在(就是不能将 dfs 定义成 $dfs(pos ,tleft , nowans )$, 这里面的 nowans 不符合要求.\r
 \r
-- 对于相同一组参数,dfs返回值总是相同的\r
+- 对于相同一组参数, dfs 返回值总是相同的\r
 \r
-## 2.记忆化搜索与动态规划的关系:\r
+## 2. 记忆化搜索与动态规划的关系:\r
 \r
-~~基本是朋(ji)友关系~~\r
+~~ 基本是朋 (ji) 友关系~~\r
 \r
-时间复杂度/空间复杂度与**不加优化的dp**完全相同\r
+时间复杂度 / 空间复杂度与 ** 不加优化的 dp** 完全相同\r
 \r
-不管定义咋扯,反正我觉得\r
+不管定义咋扯, 反正我觉得\r
 \r
-> 记忆化搜索就是动态规划,**(印象中)任何一个dp方程都能转为记忆化搜索**\r
+> 记忆化搜索就是动态规划,**(印象中)任何一个 dp 方程都能转为记忆化搜索 **\r
 \r
 比如:\r
 \r
@@ -175,46 +175,46 @@ int main(){
 }\r
 ```\r
 \r
-### 当然,以我的经验更多情况下记忆化搜索是写完暴力dfs(本来想骗分)后突然发现能改成记忆化搜索\r
+**当然, 以我的经验更多情况下记忆化搜索是写完暴力 dfs(本来想骗分)后突然发现能改成记忆化搜索**\r
 \r
-~~然后AC了一道全场没几个人会的超难dp~~\r
+~~ 然后 AC 了一道全场没几个人会的超难 dp~~\r
 \r
 感受以下那种发现自己写的暴力改改就是正解的快感吧!\r
 \r
 啊哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈!\r
 \r
-## 3.记忆化搜索的优缺点\r
+## 3. 记忆化搜索的优缺点\r
 \r
-咳咳,说正事\r
+咳咳, 说正事\r
 \r
 优点:\r
 \r
-- 记忆化搜索可以避免搜到无用状态,特别是在有状态压缩时\r
+- 记忆化搜索可以避免搜到无用状态, 特别是在有状态压缩时\r
 \r
-- 边界情况非常好处理,且能有效防止数组访问越界\r
+- 边界情况非常好处理, 且能有效防止数组访问越界\r
 \r
-- ~~写起来简单易懂~~至少我镇么认为qwq\r
+- ~~ 写起来简单易懂~~ 至少我镇么认为 qwq\r
 \r
-- 有些dp(如区间dp)用记忆化搜索写很简单但正常dp很难\r
+- 有些 dp(如区间 dp)用记忆化搜索写很简单但正常 dp 很难\r
 \r
 缺点:\r
 \r
-- 致命伤:不能滚动数组!(哪位dalao会记搜+滚动的请在评论区留名)\r
+- 致命伤: 不能滚动数组!(哪位 dalao 会记搜 + 滚动的请在评论区留名)\r
 \r
 - 有些优化比较难加\r
 \r
-- 由于递归,有时效率较低但不至于TLE\r
+- 由于递归, 有时效率较低但不至于 TLE\r
 \r
-- 代码有点长~~其实也不算太长~~\r
+- 代码有点长~~ 其实也不算太长~~\r
 \r
-## 4.记忆化搜索的注意事项:\r
+## 4. 记忆化搜索的注意事项:\r
 \r
-- 千万别忘了加记忆化! (别笑,认真的\r
+- 千万别忘了加记忆化! (别笑, 认真的\r
 \r
-- 边界条件要加在检查当前数组值是否为-1前(防止越界)\r
+- 边界条件要加在检查当前数组值是否为 - 1 前(防止越界)\r
 \r
 - 数组不要开小了(逃\r
 \r
-## 如有疑问或质疑,请留下评论或私信我\r
+## 如有疑问或质疑, 请留下评论或私信我\r
 \r
 ** questions are welcome **\r