给定一个数组,代表每个人的能力值。比赛要求团队的最低能力值为 N,每个团队可以由 1 人或 2 人组成,每个人只能参加一个团队。要求计算最多可以派出的符合要求的团队数量。
该问题的核心思路是通过贪心策略,优先将能力值较高的人单独组成团队,然后再尽可能将剩余的人配对成两人团队。首先对所有人的能力值进行排序,然后通过双指针的方式,从数组两端开始尝试配对,如果两个人的能力值之和大于等于最低要求,则组成一个团队;如果不能配对,则将能力值较高的人单独作为一个团队。通过这种策略,可以最大化符合要求的团队数量。
具体策略如下:
用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为 N ,每个团队可以由 1 人或者 2 人组成,且 1 个人只能参加 1 个团队,计算出最多可以派出多少只符合要求的团队。
第一行代表总人数,范围 1−500000
第二行数组代表每个人的能力
数组大小,范围 1−500000
元素取值,范围 1−500000
第三行数值为团队要求的最低能力值,范围 1−500000
最多可以派出的团队数量
输入
5
3 1 5 7 9
8
输出
3
说明
3、5 组成一队 1、7 一队 9 自己一队 输出 3
输入
7
3 1 5 7 9 2 6
8
输出
4
说明
3、5 组成一队,1、7 一队,9 自己一队,2、6 一队,输出 4
输入
3
1 1 9
8
输出
1
说明
9 自己一队,输出 1