[JOIG 2025] 最悪の記者 5 / Worst Reporter 5*

[JOIG 2025] 最悪の記者 5 / Worst Reporter 5

赛时切出这个题的内容需要大量的思考和联想

01.题目理解

\(n(1\leq n \leq 10^5)\)名运动员(编号\(1\)\(n\)),初始在不同位置。

发生了\(m(1\leq m \leq 10^5)\)次排名变化:第\(i\)次,\(A_i\)\(B_i\)交换位置,且交换前两人相邻。

现要构造最终排名表\(P\)\(P_j\)=排名\(j\)的运动员编号),但不知道每次交换时谁超过谁。

判断是否存在合法排名表;若存在,输出字典序最小的那个。

02.思路分析

首先考虑如果我们知道原本的序列 那么修改完后的序列显然我们就可以知道了

我们假设映射关系: \(1\) ~ \(n\)原本所在的位置是\(id_1\) ~ \(id_n\)

显然我们可以并查集去维护这样一个东西 即我们令pre[i]=i

对于pre[]数组的变化 显然可以考虑图论建模解决

每次交换发生在相邻位置,这意味着在整个过程中,运动员之间的"相邻关系"构成一个图

如果两个运动员曾经交换过,他们之间就有一条边

统计各个点的度数,对于度数大于\(2\)的节点 或者说 还有环的部分子图

posted @ 2025-10-09 20:51  SamXia  阅读(10)  评论(0)    收藏  举报