20251119 正睿
B
题意就是构造一段路径,要么前面一段之间都有边,后面一段没有;或者倒过来。
我们一个一个的插入节点,维护这个路径。
如下图,假设我们要插入 \(i\),前面的是有边的(黑实线),后面的是无边的(黑虚线),分界点为 \(u\)。根据三条蓝边是实/虚确定 \(i\) 的位置
- 如果全是实/虚,插入到末尾即可。
- 如果 \((u, i)\) 为实边,将 \(i\) 插入到 \(u, y\) 之间。
- 否则可以将 \(i\) 插入到 \(x, y\) 之间。
同时维护 \(u\) 即可。值得注意的是,可能插入后所有的边都变成实线/虚线,要特殊处理。(不能保证一定是实边在前,虚边在后。)因为这个搞了好久。
时间复杂度:\(O(n)\)。
看到题不要慌,尝试一个一个的加进去,维护路径。(有点归纳的意思。)
浙公网安备 33010602011771号