线程池至少需要线程数——23秋招招行网络科技第一批技术测评_后端(c++)
题目:有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 }
典型例题:会场安排
- 多个活动,求活动按时进行所需的最小会场数(对应上述最少线程数)——按照起始时间排序
- 一个会场,多个活动,求可安排的最多活动数——按照结束时间排序
附加
选择题一些知识点
- 设计模式:工厂模式,哪种设计模式会打破组合类封装
- 接口和抽象类
- TCP/IP:比特流是在那一层
- 创建型设计模式:A.代理;B.桥接;C.原型;D.组合
- top命令,输出信息中total:后的内容含义