Number of Groups (区间重叠问题(时间线性)+贪心优化时间复杂度+优先队列(或者set))
作者:互联网
大佬的题解:CodeCraft-22 and Codeforces Round #795 (Div. 2) A-E - 知乎 (zhihu.com)
Number of Groups time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given n colored segments on the number line. Each segment is either colored red or blue. The i-th segment can be represented by a tuple (ci,li,ri). The segment contains all the points in the range [li,ri], inclusive, and its color denoted by ci: if ci=0, it is a red segment; if ci=1, it is a blue segment. We say that two segments of different colors are connected, if they share at least one common point. Two segments belong to the same group, if they are either connected directly, or through a sequence of directly connected segments. Find the number of groups of segments. Input Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤105). Description of the test cases follows. The first line of each test case contains a single integer n (1≤n≤105) — the number of segments. Each of the next n lines contains three integers ci,li,ri (0≤ci≤1,0≤li≤ri≤109), describing the i-th segment. It is guaranteed that the sum of n over all test cases does not exceed 105. Output For each test case, print a single integer k, the number of groups of segments. Example inputCopy 2 5 0 0 5 1 2 12 0 4 7 1 9 16 0 13 19 3 1 0 1 1 1 2 0 3 4 outputCopy 2 3 Note In the first example there are 5 segments. The segments 1 and 2 are connected, because they are of different colors and share a point. Also, the segments 2 and 3 are connected, and so are segments 4 and 5. Thus, there are two groups: one containing segments {1,2,3}, and the other one containing segments {4,5}.View PROBLEM
思路:
- 关键是 哪些区间是重叠的? , 时间线性思路 AcWing 906. 区间分组(200 +ms) - AcWing ,时间大小排序(入点和出点)入点就加入集合,出点就把他删除from集合,进入的点和集合内的点都是有交集的。
- 合并的时候就用并查集就行了,最后判断 fa【i】=i,的个数
- 但是要考虑时间复杂度,最坏的情况下,n^2(一直都是加入,每一次都要和前面的所有合并), 所以,只要合并一次,就把之前的合并点删掉,保留一个R最大的就行了
- (因为他们已经是一个集合了呀,后面的点能和前面的合并,必定就一定可以和R最大的点合并),用优先队列处理
标签:ci,set,segments,contains,Number,number,test,segment,复杂度 来源: https://www.cnblogs.com/Lamboofhome/p/16342641.html