#CF2162F. Beautiful Intervals

    ID: 6976 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>构造贪心CodeforcesCodeforces Round 1059(Div3)Div3FCF2162F2100

Beautiful Intervals

题目描述

给定一个整数 nnmm 个区间。每个区间的形式为 [li,ri][l_i, r_i],满足 1lirin1 \le l_i \le r_i \le n。注意,区间可以重复。

定义 pp 为长度为 nn 的一个排列,包含所有整数 0,1,2,,n10,1,2,\dots,n-1,且每个只出现一次。

有一个多重集合 MM,最初为空。

对于每个区间 [li,ri][l_i, r_i]

  • 考虑子数组 p[liri]p[l_i \dots r_i]
  • 计算 vi=mex(p[liri])v_i = \operatorname{mex}(p[l_i \dots r_i])
  • viv_i 插入到 MM 中。

处理完所有区间后,M={v1,v2,,vm}M = \{v_1, v_2, \dots, v_m\}

你的任务是构造一个长度为 nn 的排列 pp,包含所有 0,1,2,,n10,1,2,\dots,n-1,使得 mex(M)\operatorname{mex}(M) 最小。

mex(a)\operatorname{mex}(a) 表示数组 aa 的最小未出现的非负整数。例如,mex([2,2,1])=0\operatorname{mex}([2,2,1])=0,因为 00 没有出现在数组中;而 mex([0,3,1,2])=4\operatorname{mex}([0,3,1,2])=4,因为 00112233 都出现了,但 44 没有出现。

输入格式

第一行包含一个整数 tt1t10001 \le t \le 1000)——表示测试用例的组数。每组测试用例的描述如下。

每组测试用例的第一行包含两个整数 nnmm3n30003 \le n \le 30001m30001 \le m \le 3000)。

接下来的 mm 行,每行包含两个用空格分隔的整数 li,ril_i, r_i1lirin1 \le l_i \le r_i \le n),表示一个区间。

保证所有测试用例中 nn 的总和不超过 30003000mm 的总和也不超过 30003000

输出格式

对于每个测试用例,输出一行,包含 nn 个两两不同的整数 p1,p2,,pnp_1,p_2,\ldots,p_n,即排列 pp,需满足 0pi<n0\le p_i < n 且每个数只出现一次,并使得 mex(M)\operatorname{mex}(M) 最小。

如果有多组答案,输出任意一组都可以。

样例

5
3 1
1 2
3 5
1 1
1 2
2 2
2 2
2 3
4 5
1 2
2 3
3 4
1 1
4 4
5 4
3 5
1 1
2 4
4 4
4 2
1 3
2 4
2 0 1
2 1 0 
0 2 1 3 
2 0 1 3 4 
3 1 0 2

样例说明

对于第一个测试用例,如果我们将 p=[2,0,1]p = [2, 0, 1],则 M={mex(2,0)}={1}M = \{\operatorname{mex}(2, 0)\} = \{1\}。这时 mex(M)=0\operatorname{mex}(M) = 0

对于第三个测试用例,如果我们将 p=[0,2,1,3]p = [0, 2, 1, 3],则 $M = \{\operatorname{mex}(0, 2), \operatorname{mex}(2, 1), \operatorname{mex}(1, 3), \operatorname{mex}(0), \operatorname{mex}(3)\} = \{1, 0, 0, 1, 0\}$,这时 mex(M)=2\operatorname{mex}(M) = 2

对于第四个测试用例,若我们取 p=[2,0,1,3,4]p = [2, 0, 1, 3, 4],则 $M = \{\operatorname{mex}(1, 3, 4), \operatorname{mex}(2), \operatorname{mex}(0, 1, 3), \operatorname{mex}(4)\} = \{0, 0, 2, 0\}$,这时 mex(M)=1\operatorname{mex}(M) = 1

对于第五个测试用例,若 p=[3,1,0,2]p = [3, 1, 0, 2],则 $M = \{\operatorname{mex}(3, 1, 0), \operatorname{mex}(1, 0, 2)\} = \{2, 3\}$,这时 mex(M)=0\operatorname{mex}(M) = 0

由 ChatGPT 5 翻译

来源

Codeforces 2162F,英文题名 Beautiful Intervals。