OSDN Git Service

fix: minor update
authorIr1d <sirius.caffrey@gmail.com>
Thu, 30 Aug 2018 07:15:11 +0000 (15:15 +0800)
committerIr1d <sirius.caffrey@gmail.com>
Thu, 30 Aug 2018 07:15:11 +0000 (15:15 +0800)
docs/dp/memo.md

index d5a4007..7e4165e 100644 (file)
@@ -2,7 +2,7 @@
 \r
 by $\color{Gray}{InterestingLSY}$ (菜到发灰)\r
 \r
-> 想体验把暴搜改改就是正解的快感吗? 想体验状压 dp 看似状态多到爆炸实际一跑却嗷嗷快(实际有效的状态数很少)的荣耀吗? 记忆化搜索,符合您的需求!只要 998 ,记忆化搜索带回家!记忆化搜索,记忆化搜索,再说一遍,记忆化搜索!\r
+> 想体验把暴搜改改就是正解的快感吗? 想体验状压 dp 看似状态多到爆炸实际一跑却嗷嗷快 (实际有效的状态数很少) 的荣耀吗? 记忆化搜索, 符合您的需求! 只要 998 , 记忆化搜索带回家! 记忆化搜索, 记忆化搜索, 再说一遍, 记忆化搜索!\r
 \r
 ---\r
 \r
@@ -114,7 +114,7 @@ int main(){
 ```\r
 此时 $mem$ 的意义与 dfs 相同:\r
 \r
-> 在时间 $tleft$ 内采集 **** $pos$ 个草药, 能获得的最大收益\r
+> 在时间 $tleft$ 内采集 ** 后 ** $pos$ 个草药, 能获得的最大收益\r
 \r
 这能 ac ?\r
 \r
@@ -134,15 +134,13 @@ int main(){
 \r
 ## 2. 记忆化搜索与动态规划的关系:\r
 \r
-~~ 基本是朋 (ji) 友关系~~\r
-\r
 有人会问: 记忆化搜索难道不是搜索?\r
 \r
-是搜索.但个人认为她更像 dp :\r
+是搜索. 但个人认为她更像 dp :\r
 \r
 不信你看 $mem$ 的意义:\r
 \r
-> 在时间 $tleft$ 内采集 **** $pos$ 个草药, 能获得的最大收益\r
+> 在时间 $tleft$ 内采集 ** 后 ** $pos$ 个草药, 能获得的最大收益\r
 \r
 这不就是 dp 的状态?\r
 \r
@@ -156,7 +154,7 @@ int main(){
 \r
 > 记忆化搜索约等于动态规划,**(印象中)任何一个 dp 方程都能转为记忆化搜索 **\r
 \r
-大部分记忆化搜索的状态/转移方程与dp都一样,时间复杂度 / 空间复杂度与 ** 不加优化的 ** dp 完全相同\r
+大部分记忆化搜索的状态 / 转移方程与 dp 都一样, 时间复杂度 / 空间复杂度与 ** 不加优化的 ** dp 完全相同\r
 \r
 比如:\r
 \r
@@ -211,10 +209,10 @@ int main(){
 ### 方法 II:\r
 \r
 1. 写出这道题的暴搜程序(最好是 [dfs](/search/dfs) )\r
-2. 将这个 dfs 改成"无需外部变量"的 dfs\r
+2. 将这个 dfs 改成 "无需外部变量" 的 dfs\r
 3. 添加记忆化数组\r
 \r
-举例: 本文最开始介绍"什么是记忆化搜索"时举的"采药"那题的例子\r
+举例: 本文最开始介绍 "什么是记忆化搜索" 时举的 "采药" 那题的例子\r
 \r
 ---\r
 \r
@@ -224,40 +222,36 @@ int main(){
 \r
 - 记忆化搜索可以避免搜到无用状态, 特别是在有状态压缩时\r
 \r
-举例: 给你一个有向图(注意不是完全图),经过每条边都有花费,求从点1出发,经过每个点**恰好一次**后的最小花费(最后不用回到起点),保证路径存在.\r
+举例: 给你一个有向图(注意不是完全图), 经过每条边都有花费, 求从点 1 出发, 经过每个点 ** 恰好一次 ** 后的最小花费(最后不用回到起点), 保证路径存在.\r
 \r
-dp状态很显然:\r
+dp 状态很显然:\r
 \r
-设 $dp[pos][mask]$ 表示身处在 $pos$ 处,走过 $mask$ ( mask 为一个二进制数) 中的顶点后的最小花费\r
+设 $dp[pos][mask]$ 表示身处在 $pos$ 处, 走过 $mask$ ( mask 为一个二进制数) 中的顶点后的最小花费\r
 \r
-常规 $dp$ 的状态为 $O(n\cdot 2^n)$ , 转移复杂度(所有的加在一起)为 $O(m)$\r
+常规 $dp$ 的状态为 $O(n\cdot 2^n)$ , 转移复杂度 (所有的加在一起) 为 $O(m)$\r
 \r
-但是!如果我们用记忆化搜索,就可以避免到很多无用的状态,比如 $pos$ 为起点却已经经过了 $>1$ 个点的情况.\r
+但是! 如果我们用记忆化搜索, 就可以避免到很多无用的状态, 比如 $pos$ 为起点却已经经过了 $>1$ 个点的情况.\r
 \r
 然后就 $rk1$ 了\r
 \r
-- 不需要注意转移顺序(这里的"转移顺序"指正常 dp 中 for 循环的嵌套顺序以及循环变量是递增还是递减)\r
+- 不需要注意转移顺序(这里的 "转移顺序" 指正常 dp 中 for 循环的嵌套顺序以及循环变量是递增还是递减)\r
 \r
-举例: 用常规 dp 写"合并石子"需要先枚举区间长度然后枚举起点,但记忆化搜索直接枚举断点(就是枚举当前区间由哪两个区间合并而成)然后递归下去就行\r
+举例: 用常规 dp 写 "合并石子" 需要先枚举区间长度然后枚举起点, 但记忆化搜索直接枚举断点 (就是枚举当前区间由哪两个区间合并而成) 然后递归下去就行\r
 \r
 - 边界情况非常好处理, 且能有效防止数组访问越界\r
 \r
-- ~~写起来简单易懂~~ 至少我镇么认为 qwq\r
-\r
 - 有些 dp ( 如区间 dp )用记忆化搜索写很简单但正常 dp 很难\r
 \r
-- 记忆化搜索天生携带搜索天赋,可以使用技能"剪枝"!\r
+- 记忆化搜索天生携带搜索天赋, 可以使用技能 "剪枝"!\r
 \r
 缺点:\r
 \r
-- 致命伤: 不能滚动数组!(哪位 dalao 会记搜 + 滚动的请在评论区留名)\r
+- 致命伤: 不能滚动数组!\r
 \r
 - 有些优化比较难加\r
 \r
 - 由于递归, 有时效率较低但不至于 TLE (状压 dp 除外)\r
 \r
-- 代码有点长~~其实也不算太长~~\r
-\r
 ---\r
 \r
 ## 5. 记忆化搜索的注意事项\r
@@ -270,7 +264,7 @@ dp状态很显然:
 \r
 ---\r
 \r
-## 如有疑问或质疑, 请留下评论或私信我\r
+** 如有疑问或质疑, 请留下评论或私信我 **\r
 \r
 ** questions are welcome **\r
 \r