题目:有n个计划,每个计划有开始,结束时间,求线程池最少需要多少个线程?
例:
输入:2,[ [1, 2], [3,4] ],输出:1
输入:2, [ [1,3], [2,4] ], 输出:2
思路:贪心算法
PS:其实我不是很理解下面代码第11行,分别对a,b数组排序
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 int n, k = 0, ans = 0; 7 scanf("%d", &n); 8 int a[n], b[n]; 9 for(int i=0; i<n; i++) 10 scanf("%d %d", &a[i], &b[i]); 11 sort(a, a+n), sort(b, b+n); 12 for(int i=0; i<n; i++) 13 a[i] < b[k] ? ans++ : k++; 14 printf("%d\n", ans); 15 return 0; 16 }
典型例题:会场安排
- 多个活动,求活动按时进行所需的最小会场数(对应上述最少线程数)——按照起始时间排序
- 一个会场,多个活动,求可安排的最多活动数——按照结束时间排序