区间覆盖

Posted hhyx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了区间覆盖相关的知识,希望对你有一定的参考价值。

# 题意
N个闭区间[ai,bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。
输出最少区间数,如果无法完全覆盖则输出-1。

# 题解
1.按照左端点从小到大排序
2.从前往后依次枚举每个区间,在所有能覆盖的start区间中选择右端点最大的区间,然后将start更新成右端点的最大值

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N=1e5+10;
 4 struct Range
 5 {
 6     int l, r;
 7     bool operator< (const Range &W)const
 8     {
 9         return l < W.l;
10     }
11 }ele[N];
12 int n;
13 int main(){
14     int st,ed;
15     scanf("%d%d", &st, &ed);
16     scanf("%d", &n);
17     for(int i=0;i<n;i++) cin>>ele[i].l>>ele[i].r;
18 
19     sort(ele,ele+n);
20 
21     int res = 0;
22     bool success = false;
23 
24     for(int i=0;i<n;i++){
25         int j=i,r= -2e9 ;
26         while(j < n && ele[j].l <= st)
27         {
28             r = max( r , ele[j].r );
29             j++;
30         }
31 
32         if(r<st){
33             res=-1;
34             break;
35         }
36         res++;
37 
38         if(r>=ed){
39             success = true;
40             break;
41         }
42         st = r;
43         i = j - 1;
44     }
45 
46     if(!success) res = -1;
47 
48     printf("%d
",res);
49     return 0;
50 }

 

以上是关于区间覆盖的主要内容,如果未能解决你的问题,请参考以下文章

区间覆盖

片段布局不覆盖整个屏幕

贪心算法_区间选点_区间分组_区间覆盖_huffman树

片段(Java) | 机试题+算法思路+考点+代码解析 2023

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试

Android片段z-index覆盖