OD 算法题 B卷【最多团队】
文章目录
- 最多团队
最多团队
- 用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为k,每个团队可以由1人或者2人组成,且一个人只能参加1个团队;
- 计算出最多可以派出多少支符合要求的团队;
输入描述:
第一行输入总人数;
第二行输入每个人的能力;
第三行输入团队要求的最低能力值k;
输出描述:
最多可以派出的团队数量
示例1
输入:
5
3 1 5 7 9
8
输出:
3
示例2
输入:
7
3 1 5 7 9 2 6
8
输出:
4
示例3
输入:
3
1 1 9
8
输出:
1
python实现:
- 能力值升序排序;
- 一人能力满足则一人成队;否则再加入一个最低能力的人(总和满足>=k)
n = int(input().strip())
cable_arr = list(map(int, input().strip().split()))
k = int(input().strip())cable_arr.sort()
visited = [0 for _ in range(n)]result = 0
for i in reversed(range(n)):# 跳过已访问的if visited[i] == 1:continueif cable_arr[i] >= k:result += 1visited[i] = 1else:# 两人队left = k - cable_arr[i]j = 0while j < n:if visited[j] == 1:j += 1continueif cable_arr[j] >= left:visited[j] = 1result += 1breakj += 1print(result)