[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\)的节点 或者说 还有环的部分子图

浙公网安备 33010602011771号