20251119 正睿

25noip赠送赛day3之不唱搁浅

B

题意就是构造一段路径,要么前面一段之间都有边,后面一段没有;或者倒过来。

我们一个一个的插入节点,维护这个路径。

如下图,假设我们要插入 \(i\),前面的是有边的(黑实线),后面的是无边的(黑虚线),分界点为 \(u\)。根据三条蓝边是实/虚确定 \(i\) 的位置

image
  • 如果全是实/虚,插入到末尾即可。
  • 如果 \((u, i)\) 为实边,将 \(i\) 插入到 \(u, y\) 之间。
  • 否则可以将 \(i\) 插入到 \(x, y\) 之间。

同时维护 \(u\) 即可。值得注意的是,可能插入后所有的边都变成实线/虚线,要特殊处理。(不能保证一定是实边在前,虚边在后。)因为这个搞了好久。

时间复杂度:\(O(n)\)

看到题不要慌,尝试一个一个的加进去,维护路径。(有点归纳的意思。)

posted @ 2025-11-20 22:12  xiehanrui0817  阅读(2)  评论(0)    收藏  举报