CFCF2162F.Beautiful Intervals
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个整数 n 和 m 个区间。每个区间的形式为 [li,ri],满足 1≤li≤ri≤n。注意,区间可以重复。
定义 p 为长度为 n 的一个排列,包含所有整数 0,1,2,…,n−1,且每个只出现一次。
有一个多重集合 M,最初为空。
对于每个区间 [li,ri]:
- 考虑子数组 p[li…ri],
- 计算 vi=mex(p[li…ri]),
- 将 vi 插入到 M 中。
处理完所有区间后,M={v1,v2,…,vm}。
你的任务是构造一个长度为 n 的排列 p,包含所有 0,1,2,…,n−1,使得 mex(M) 最小。
mex(a) 表示数组 a 的最小未出现的非负整数。例如,mex([2,2,1])=0,因为 0 没有出现在数组中;而 mex([0,3,1,2])=4,因为 0、1、2、3 都出现了,但 4 没有出现。
输入格式
第一行包含一个整数 t(1≤t≤1000)——表示测试用例的组数。每组测试用例的描述如下。
每组测试用例的第一行包含两个整数 n 和 m(3≤n≤3000,1≤m≤3000)。
接下来的 m 行,每行包含两个用空格分隔的整数 li,ri(1≤li≤ri≤n),表示一个区间。
保证所有测试用例中 n 的总和不超过 3000,m 的总和也不超过 3000。
输出格式
对于每个测试用例,输出一行,包含 n 个两两不同的整数 p1,p2,…,pn,即排列 p,需满足 0≤pi<n 且每个数只出现一次,并使得 mex(M) 最小。
如果有多组答案,输出任意一组都可以。
输入输出样例
输入#1
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
输出#1
2 0 1 2 1 0 0 2 1 3 2 0 1 3 4 3 1 0 2
说明/提示
对于第一个测试用例,如果我们将 p=[2,0,1],则 M={mex(2,0)}={1}。这时 mex(M)=0。
对于第三个测试用例,如果我们将 p=[0,2,1,3],则 M={mex(0,2),mex(2,1),mex(1,3),mex(0),mex(3)}={1,0,0,1,0},这时 mex(M)=2。
对于第四个测试用例,若我们取 p=[2,0,1,3,4],则 M={mex(1,3,4),mex(2),mex(0,1,3),mex(4)}={0,0,2,0},这时 mex(M)=1。
对于第五个测试用例,若 p=[3,1,0,2],则 M={mex(3,1,0),mex(1,0,2)}={2,3},这时 mex(M)=0。