第八册第02课时 区间贪心
一、贪心算法1
练习题A 整数区间
题目描述
请编程完成以下任务:
- 读取闭区间的个数及它们的描述;
- 找到一个含元素个数最少的集合,使得对于每一个区间,都至少有一个整数属于该集合,输出该集合的元素个数。
输入描述
首行包括区间的数目n,1≤n≤10000,接下来的n行,每行包括两个整数 a,b,被一空格隔开,0≤a≤b≤10000,它们是某一个区间的开始值和结束值。
输出描述
第一行集合元素的个数,对于每一个区间都至少有一个整数属于该区间,且集合所包含元素数目最少。
输入样例
4
3 6
2 4
0 2
4 7
输出样例
2
练习题B 区间不相交问题
题目描述
给定 N 个闭区间[ai,bi],请你在数轴上选择若干区间,使得选中的区间之间互不相交(包括端点)。
输出可选区间的最大数量。
输入描述
第一行包含整数N,表示区间数。
接下来N行,每行包含两个整数
a
i
a_i
ai,
b
i
b_i
bi,表示一个区间的两个端点。
输出描述
输出一个整数,表示可选区区间的最大数量。
数据范围
1<=N<=
1
0
5
10^5
105
−
1
0
9
-10^9
−109<=
a
i
a_i
ai<=
b
i
b_i
bi<=
1
0
9
10^9
109
输入样例
4
3 6
2 4
0 2
4 7
输出样例
2
练习题C 区间覆盖问题
题目描述
给定N个闭区间[
a
i
a_i
ai,
b
i
b_i
bi]以及一个线段区间[s,t],请你选择尽量少的区间,将指定线段区间完全覆盖。
输出最少区间数,如果无法完全覆盖,则输出-1。
输入数据均不需判错
输入描述
第一行包含两个整数s和t,表示给定线段区间的两个端点。
第二行一个整数n,表示给定区间数。
接下来n行,每行两个整数
a
i
a_i
ai,
b
i
b_i
bi,表示一个区间的两个端点。
输出描述
输出一个整数,表示所需最少区间数。
如果无解,则输出-1。
数据范围
1<=N<=
1
0
5
10^5
105
−
1
0
9
-10^9
−109<=
a
i
a_i
ai<=
b
i
b_i
bi<=
1
0
9
10^9
109
−
1
0
10
-10^{10}
−1010<=s<=t<=
1
0
9
10^9
109
输入样例
1 5
3
-1 3
2 4
3 5
输出样例
2
练习题D 奶牛日光浴
题目描述
有C(1≤C≤2500)头奶牛进行日光浴,第i头奶牛需要minSPF[i]到maxSPF[i](1≤minSPF[i]≤1000;minSPF[i]≤maxSPF[i]≤1000)单位强度之间的阳光。每头奶牛在日光浴前必须涂防晒霜,防晒霜有L(1≤L≤2500)种,涂上第i种之后,身体接收到的阳光强度就会稳定为 SPF[i](1≤SPF[i]≤1000),第i种防晒霜有cover[i]瓶。求最多可以满足多少头奶牛进行日光浴。
输入描述
第一行输入整数C和L。接下来的C行,按次序每行输入一头牛的minSPF和maxSPF值,
即第i行输入minSPF[i]和maxSPF[i]。再接下来的L行,按次序每行输入一种防晒霜的SPF和cover值,即第i行输入SPF[i]和cover[i]。每行的数据之间用空格隔开。
输出描述
输出一个整数,代表最多可以满足奶牛日光浴的奶牛数目。
输入样例
3 2
3 10
2 5
1 5
6 2
4 1
输出样例
2