【题解】CF1066F Yet another 2D Walking
难度:\(2/10\)
容易发现在走 \(\max\) 值相等的同一层时,一定只有两种不同的做法:
- 从左上角向右走到右上,然后再向下走到右下。
- 从右下角向上走到右上,然后再向左走到左上。
容易证明其余情况一定都不优。
然后问题就简单了:因为只能从 \(\max\) 小的地方走到 \(\max\) 大的地方,所以考虑直接区间 dp:维护出每一个 \(\max\) 值相同的连续段 \(l_i,r_i\),然后设 \(f_{i,0/1}\) 表示当前走了前 \(i\) 个连续段,当前位于左上角 / 右下角,最小所需的花费是多少。转移是容易的。
总时间复杂度为 \(O(n\log n)\),瓶颈在于排序,换个基排可以做到理论 \(O(n)\) 时间复杂度。

浙公网安备 33010602011771号