2018 杭电多校1 - Distinct Values

Posted tobyw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018 杭电多校1 - Distinct Values相关的知识,希望对你有一定的参考价值。

题目:

 

Problem Description

Chiaki has an array of n positive integers. You are told some facts about the array: for every two elements $$$a_i$$$ and  $$$a_j$$$ in the subarray $$$a_{l,r} (l ≤ i < j ≤ r )$$$

Input

There are multiple test cases. The first line of input contains an integer T, indicating the number of test cases. For each test case:
The first line contains two integers n,m (1 ≤ n,m  ≤ 10$$$^5$$$) -- the length of the array and the number of facts. Each of the next m lines contains two integers $$$ l_i$$$ and $$$r_i$$$ (1 ≤ $$$l_i$$$ ≤ $$$r_i$$$  ≤ 10$$$^5$$$)

It is guaranteed that neither the sum of all n nor the sum for all m exceeds 10$$$^6$$$.

 
Output

For each test case, output n integers denoting the lexicographically minimal array. Integers should be separated by a single space, and no extra spaces are allowed at the end of lines.

 
Sample Input

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

 
Sample Output

1 2

1 2 1 2

1 2 3 1 1

 

【题意】

给m个区间[$$$l_i, r_i$$$],要构造一个长度为n的串,每个区间内的数不能有相同的,且整个串的字典序最小

【思路】

要求字典序最小,自然想到要按从左到右的顺序对串进行填充,因为最左边的区间一定是从1开始填的,而它一旦填充,由于区间重叠,就会对后面的区间造成影响。在填充的过程中有两个问题需要解决:如何寻找下一个区间?如何维护下一个区间可以使用的数字?

首先可以肯定的是,如果一个区间被更大的区间包含,就再也不需要考虑它了,因为大的区间满足它也一定满足;因此,需要考虑的区间只可能两两重叠,或不重叠,所以它们的左右端点与其他区间都不一样。

假设现在已经填好了第$$$i$$$个位置,下一个位置$$$i+1$$$就有两种可能:两点在同一个区间内,$$$i+1$$$直接从剩下的可用数字中选一个最小的;两点在不同区间内,这个时候[$$$l_{i+1},r_{i+1}$$$]已经填充了一部分了,也就是两区间的重叠部分[$$$l_{i+1},r_i$$$]

 

以上是关于2018 杭电多校1 - Distinct Values的主要内容,如果未能解决你的问题,请参考以下文章

2018杭电多校第二场1003(DFS,欧拉回路)

2018杭电多校第一场(A)

2018 Multi-University Training Contest 3 杭电多校第三场

2022 杭电多校 第三场 A

2021杭电多校1

2021杭电多校1