题1/*
【租车骑绿岛】
部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重m。
给出部门每个人的体重,请问最多需要租用多少双人自行车。
输入描述:
第一行两个数字m、n,分别代表自行车限重,部门总人数。
第二行,n个数字,代表每个人的体重,体重都小于等于自行车限重m。
0<m<=200
0<n<=1000000
输出描述:
最小需要的双人自行车数量。
示例1
3 4
3 2 2 1
输出
3
分析:该题主要考察排序和双指针遍历
算法实现思路:
-
将所有人的体重从小到大排序。
-
定义两个指针,分别指向最轻和最重的人。
-
如果最轻和最重的人的体重相加不超过自行车限重m,他们就一起骑走,指针分别向中间移动;否则只能最重的人一人骑走,最轻的人不骑。
-
记录租用的双人自行车数量,重复步骤3直到所有人都骑走。
-
输出结果。
下面我们用java实现以上算法。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt(); // 自行车限重
int n = scanner.nextInt(); // 部门总人数
&nbs

3579




被折叠的 条评论
为什么被折叠?



