专栏文章

题解:CF677D Vanya and Treasure

CF677D题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mir3on3n
此快照首次捕获于
2025/12/04 15:14
3 个月前
此快照最后确认于
2025/12/04 15:14
3 个月前
查看原文

solution

题解基本全是根号做法,这里来个不一样的。
考虑朴素的 dp,遍历所有数字,对于每一个数字,设 dpi,jdp_{i,j} 表示在 {i,j}\{i,j\} 这个位置最少走多少步,显然当前数字的所有位置可以由上一个数字的所有位置转移过来,转移时简单的。
但这样无法通过,考虑优化,设从 {x1,y1}\{x_1,y_1\} 转移到 {x2,y2}\{x_2,y_2\},不妨设 x1<x2x_1<x_2y1<y2y_1<y_2,则其间的距离为 x2x1+y2y1| x_2-x_1 |+| y_2-y_1| 拆开即为 x2+y2x1y2x_2+y_2-x_1-y_2,所以每次转移相当于找到前面一个数时最小的 dpx1,y1x1y1dp_{x_1,y_1}-x_1-y_1 再加上 x2+y2x_2+y_2,把每个颜色的对应位置存下来,用二维树状数组维护即可。
这里只是从左上转移到右下的情况,需要旋转三次得到其他方向的答案。

评论

0 条评论,欢迎与作者交流。

正在加载评论...