2018 杭电多校1 - Distinct Values
Posted tobyw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2018 杭电多校1 - Distinct Values相关的知识,希望对你有一定的参考价值。
题目:
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 )$$$
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$$$.
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.
3
2 1
1 2
4 2
1 2
3 4
5 2
1 3
2 4
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的主要内容,如果未能解决你的问题,请参考以下文章