diff --git a/TangDou/AcWing_TiGao/T1/NumberTriangles/数字三角形专题.md b/TangDou/AcWing_TiGao/T1/NumberTriangles/数字三角形专题.md index 92b4bf6..2494ffd 100644 --- a/TangDou/AcWing_TiGao/T1/NumberTriangles/数字三角形专题.md +++ b/TangDou/AcWing_TiGao/T1/NumberTriangles/数字三角形专题.md @@ -4,7 +4,7 @@ **[$AcWing$ $1015$. 摘花生](https://www.acwing.com/problem/content/1017/)** -二维状态表示,双重循环填充二维表,从上或右可以转移 +二维状态表示,双重循环填充二维表,从上或左可以转移 ```cpp {.line-numbers} for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) @@ -16,26 +16,25 @@ f[i][j] = max(f[i - 1][j], f[i][j - 1]) + w[i][j]; ``` -初始值 +**初始化** ```cpp {.line-numbers} f[1][1] = w[1][1]; //出发点 ``` -① **状态表示** -$f[i][j]$代表走到第$(i,j)$个位置时可以获取到的最大数量和 +**状态表示** +$f[i][j]$:走到第$(i,j)$个位置时可以获取到的最大数量和 -② **状态转移** -即$f[i][j]$可以从哪些状态转移而来 +**状态转移** +$f[i][j]$可以从哪些状态转移而来,答:从上方或左方过来 -③ **初始值** -思考起点下状态表示的现实含义即可 +**初始值** +思考起点状态表示的现实含义 **总结** -① 动态规划需要按上面的三步走,而最难的是状态表示,状态转移还好,根据题意可以推出相应的转换关系。状态表示一般是通过 **经验**,对,是 **经验**。 +① 动态规划需要按上面的三步走,而最难的是状态表示,状态转移还好,根据题意推出相应的转换关系。状态表示靠 **经验**,对,是 **经验**。 -② 初始值:不一定非得放在循环外进行初始化,也可以合并在循环内,有时放在循环内初始化反而更方便更直接。 - -③ 可以使用一维表示,但我个人理解不如二维的直观,最起码思路应该是先有两维再缩成一维,而不是上来就直接一维。一般的题目不会对内存有严格的限制,能用二维还是二维吧,实在卡内存再考虑降为一维。 +② 初始值:放在循环内初始化更直接 +③ 一维状态表示,我理解不如二维直观,最起码思路应该是先有两维再缩成一维,而不是上来就直接一维。一般的题目不会对内存有严格的限制,能用二维还是二维吧,实在卡内存再考虑降为一维。 **[$AcWing$ $1018$. 最低通行费](https://www.acwing.com/problem/content/1020/)** 与上一题基本一样,只不过是变换了下,需要你用思维转一下:$2n-1$次,就是说只能向下或向右,否则次数就不达标了。还有一点,就是需要求最小值,而不是最大值,其它的没区别