diff --git a/TangDou/AcWing_TiGao/T1/1027.md b/TangDou/AcWing_TiGao/T1/1027.md index 0ed1846..3c26dbd 100644 --- a/TangDou/AcWing_TiGao/T1/1027.md +++ b/TangDou/AcWing_TiGao/T1/1027.md @@ -77,7 +77,7 @@ $N≤10$ 很明显,傻子都知道方案$2$是最优选择。 -两个小朋友 **一起走** 为什么就行呢?因为他们在一起整体考虑,互相关心、互相照顾~,彼此能知道对方走了哪个点,自己在不影响最优取值的情况下,尽可能的取次优的点,这样,就可以得到全局最优解。 +两个小朋友 **一起走** 为什么就行呢?因为他们在一起整体考虑,互相关心、互相照顾~,彼此能知道对方走了哪个点,自己在不影响最优取值的情况下,尽可能的取 **次优** 的点,就可以得到全局最优解。 > **一起走**:两个小朋友步调一致,“一二三” 一起走,也就是任意时刻,两人走的步数是完全一样的。 @@ -95,7 +95,7 @@ $$ \end{matrix}\right. $$ -这四种情况,都有可能是$f[x_1][y_1][x_2][y_2]$的前序,具体走哪个,需要对四个进行求$max$,谁大取谁。 +这四种情况,都有可能是$f[x_1][y_1][x_2][y_2]$的前序,具体走哪个,可以理解为四个都试试,然后求$max$,谁大取谁。 ```cpp {.line-numbers} int t = f[x1 - 1][y1][x2 - 1][y2]; //下下 @@ -104,14 +104,14 @@ t = max(t, f[x1 - 1][y1][x2][y2 - 1]); //下右 t = max(t, f[x1][y1 - 1][x2 - 1][y2]); //右下 ``` -还有一个问题没有解决 : **没有加上当前状态新到的位置上的数字**,这个需要讨论一下: +还有一个问题没有解决 : **没有加上当前状态新到的位置上的数字**,讨论一下: -* 两个小朋友走的格子不是同一个: - $w=t+w[x_1][y_1]+w[x_2][y_2]$ +* ① 两个小朋友走的格子不是同一个: + $f[x_1][y_1][x_2][y_2]=t+w[x_1][y_1]+w[x_2][y_2]$ -* 两个小朋友走的格子是同一个 +* ② 两个小朋友走的格子是同一个 因为题目要求每个格子只能取一次,就是说如果同一时间走到同一个格子中,应该是取一次值即可: - $w=t+w[x_1][y_1]$ + $f[x_1][y_1][x_2][y_2]=t+w[x_1][y_1]$ 利用四层循环,从上到下,从左到右的完成状态表的填充,就可以取得正确答案: ```cpp {.line-numbers}