手机网站排版,最新网络推广方法,企业建设网站有哪些费用,郑州网站制作公司怎么样(新卷,100分)- 租车骑绿岛#xff08;Java JS Python#xff09;题目描述部门组织绿岛骑行团建活动。租用公共双人自行车#xff0c;每辆自行车最多坐两人#xff0c;最大载重M。
给出部门每个人的体重#xff0c;请问最多需要租用多少双人自行车。输入描述第…(新卷,100分)- 租车骑绿岛Java JS Python题目描述部门组织绿岛骑行团建活动。租用公共双人自行车每辆自行车最多坐两人最大载重M。给出部门每个人的体重请问最多需要租用多少双人自行车。输入描述第一行两个数字m、n分别代表自行车限重部门总人数。第二行n个数字代表每个人的体重体重都小于等于自行车限重m。0m2000n1000000输出描述最小需要的双人自行车数量。用例输入3 43 2 2 1输出3说明无题目解析本题需要最少的车辆即尽可能组合出重量小于等于m的两人组。首先我们可以将所有人按体重升序然后将最大体重和m比较若最大体重大于等于m则这个人只能一人占一辆车车数量count然后将最大体重弹出继续将剩下体重中最大的和m比较逻辑同上直到最大体重小于m时停止弹出。在剩余体重中我们利用双指针i指针指向最小体重j指针指向最大体重然后组合它们即arr[i]arr[j]和m比较若小于等于m则说明这两个人可以共享一辆车车数量count然后ij--。如果arr[i]arr[j]m则说明两个人无法共享一辆车我们只能优先将这里车分配给较大体重的人此时车数量count然后j--。按上面逻辑移动双指针最后可能会出现两种情况i j 此情况下所有人均分配到了车因此可以直接输出count作为题解i j 此情况下还有一个人未分配到车因此需要count为这个人单独分配一辆车JavaScript算法源码/* JavaScript Node ACM模式 控制台输入获取 */ const readline require(readline); const rl readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines []; rl.on(line, (line) { lines.push(line); if (lines.length 2) { const [m, n] lines[0].split( ).map(Number); const arr lines[1].split( ).map(Number); console.log(getResult(arr, m, n)); lines.length 0; } }); function getResult(arr, m, n) { arr.sort((a, b) a - b); let count 0; // while (arr.at(-1) m) { // count; // arr.pop(); // } let i 0; let j arr.length - 1; while (i j) { if (arr[i] arr[j] m) i; j--; count; } if (i j) count; return count; }Java算法源码import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc new Scanner(System.in); int m sc.nextInt(); int n sc.nextInt(); int[] arr new int[n]; for (int i 0; i n; i) { arr[i] sc.nextInt(); } System.out.println(getResult(arr, m)); } public static int getResult(int[] arr, int m) { Arrays.sort(arr); int count 0; int i 0; int j arr.length - 1; while (i j) { if (arr[i] arr[j] m) i; j--; count; } if (i j) count; return count; } }Python算法源码# 输入获取 m, n map(int, input().split()) arr list(map(int, input().split())) # 算法入口 def getResult(arr, m, n): arr.sort() count 0 i 0 j n - 1 while i j: if arr[i] arr[j] m: i 1 j - 1 count 1 if i j: count 1 return count # 算法调用 print(getResult(arr, m, n))