建设部网站网站建设学校

苏州梓琰金属制品有限公司 2026/09/09 19:06:47

(新卷,100分)- 租车骑绿岛(Java & JS & Python)

题目描述

部门组织绿岛骑行团建活动。租用公共双人自行车,每辆自行车最多坐两人,最大载重M。
给出部门每个人的体重,请问最多需要租用多少双人自行车。

输入描述

第一行两个数字m、n,分别代表自行车限重,部门总人数。

第二行,n个数字,代表每个人的体重,体重都小于等于自行车限重m。

  • 0<m<=200
  • 0<n<=1000000
输出描述

最小需要的双人自行车数量。

用例
输入3 4
3 2 2 1
输出3
说明
题目解析

本题需要最少的车辆,即尽可能组合出重量小于等于m的两人组。

首先,我们可以将所有人按体重升序,然后将最大体重和m比较,若最大体重大于等于m,则这个人只能一人占一辆车,车数量count++,然后将最大体重弹出,继续将剩下体重中最大的和m比较,逻辑同上,直到最大体重小于m时,停止弹出。

在剩余体重中,我们利用双指针,i指针指向最小体重,j指针指向最大体重,然后组合它们,即arr[i]+arr[j],和m比较,若小于等于m,则说明这两个人可以共享一辆车,车数量count++,然后i++,j--。如果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))
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

永州网站建设鄂州网站建设

form-generator与Vue3技术整合实战:构建高效表单开发方案【免费下载链接】form-generator:sparkles:Element UI表单设计及代码生成器项目地址:

2026/06/30 13:29:36

网站建设空间株洲网站建设

第一章:云原生Agent自动化部署的演进与挑战随着云原生技术的快速发展,Agent作为连接基础设施与上层控制平面的关键组件,其自动化部署模式经历了显著演进。从

2026/06/30 12:51:33

网站建设服务肇庆网站建设

你是否曾遇到这样的困境:在PyTorch中精心微调的大语言模型,部署到生产环境时却遭遇性能瓶颈?模型推理速度慢如蜗牛,硬件资源消耗巨大ÿ

2026/06/30 10:41:21

网站建设与维护网站建设招聘

第一章:Dify文档保存优化概述在构建基于大语言模型的应用时,文档的高效保存与检索是提升系统响应速度和用户体验的关键环节。Dify 作为一个集成了 AI 工作流编排与应用开

2026/06/30 12:10:59

建设网站郑州网站建设公司

CSDN 集成 VoxCPM-1.5-TTS:让技术文章“开口说话”在信息爆炸的时代,开发者读一篇万字博文可能要花上半小时。如果能像听播客一样“听懂”技术原理,

2026/06/30 13:46:07

西安网站建设海口网站建设

Wan2.2-T2V-A14B在大型展会开幕式虚拟演出中的协同编排能力在一场国际级科技展会的开幕式彩排现场,导演临时提出:“能不能让那位穿汉服的虚拟舞者,从现

2026/06/30 11:01:23

东莞网站建设公司宜兴网站建设

目录摘要项目技术支持论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作摘要该系统基于SpringBoot框架开

2026/06/30 11:31:26

襄樊网站建设网站建设与设计

智能体对话系统构建指南:以Anything-LLM为核心引擎在企业知识爆炸式增长的今天,员工花三小时翻找一份合同条款、客服反复查阅产品手册仍答非所问——这类场景早已司空见惯

2026/06/30 13:58:08

大连网站建设旅游网站建设方案

5分钟快速配置浏览器Markdown预览插件完整教程【免费下载链接】markdown-viewerMarkdown Viewer / Browser Extension项目地址: https://gi

2026/06/30 12:15:00

网站建设多少钱广州网站建设工作室

影视特效素材管理:海量镜头自动打标归档引言:影视后期的“数据洪流”困局在现代影视制作中,一个中等规模的特效项目往往涉及数万张渲染帧、分层通道图、预演镜头和资产

2026/06/30 12:02:59