线程池至少需要线程数——23秋招招行网络科技第一批技术测评_后端(c++)

发布时间 2023-09-04 21:54:13作者: DaxiaWan

题目:有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 }

 

 

参考链接

典型例题:会场安排

  • 多个活动,求活动按时进行所需的最小会场数(对应上述最少线程数)——按照起始时间排序
  • 一个会场,多个活动,求可安排的最多活动数——按照结束时间排序