专栏文章

题解:P7195 [IOI2019] 折线

P7195题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@miqgjfta
此快照首次捕获于
2025/12/04 04:26
3 个月前
此快照最后确认于
2025/12/04 04:26
3 个月前
查看原文
WC2025 讲,遂写题解。

做法 1

考虑使用绕圈圈方法,第一步从 (0,0)(0,0) 走到 xx 最大的点,然后刚才的那条折线继续延伸直到 yy 最大的点的 yy 坐标,然后向左拐,左拐以后继续提前准备右拐。
理想情况下每个折线可以达到一个点。

做法 2

刚才那个东西显然无法处理 xi=yi=ix_i=y_i=i 这样的情况。
思考一下为什么。我们从一个点绕进去了以后,到达了当前所有未遍历点的右上角。此时你无法通过延长上一条直线来节省步数。
同样的情况还有,当我们来到 (1,1)(1,1) 这个点时,这个点恰好是所有未遍历点的左下角。此时仍然要多花步数。
考虑单独设计一个做法求这个构造。从左下角遍历到右上角就可以了。

做法 3

考虑把刚才两个东西缝起来。能绕就绕,不能绕就先把这个点删掉然后加入两个队列中的一个。
这两个队列分别是一条从左下到右上的线和从左上到右下的线。
绕完以后把这两个队列走一遍即可。精细实现可以做到步数 n+3\le n+3

评论

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

正在加载评论...