2026华为OD面试题021:最大化游戏试玩资格分发

发布时间:2026/7/14 5:56:55

2026华为OD面试题021:最大化游戏试玩资格分发
题目描述新研发了一台游戏设备面向用户开放试玩。现在收到n个试玩申请每个申请有开始时间和结束时间。你是协调员要从这些申请里挑出一批满足任意两场被选中的试玩时间不重叠。允许连续衔接比如[2,3]和[3,4]可以同时安排。被安排的试玩数量要尽量多。问最多能安排多少场输入描述第一行整数n1 n 10^5表示申请数量。第二行n个元素每个元素是start,end元素之间用空格分隔start和end之间用逗号分隔0 start end 10^9。输出描述一个整数表示最多能安排的试玩数量。示例 1输入3 1,5 2,3 4,6输出2说明选[2,3]和[4,6]共 2 场。示例 2输入5 1,2 3,4 5,6 7,8 9,10输出5讲个故事游戏展的爆款试玩台小张在游戏展负责一台爆款试玩机。开展前收到一堆试玩申请每个玩家都报了一个想玩的时间段比如2 点到 3 点“4 点到 6 点”。机器就一台同一时间只能一个人玩。但前一个刚结束、下一个马上接上这没问题。小张的任务是从这堆申请里挑出一批时间上不打架数量越多越好。说白了这不就是活动安排问题吗核心原理为什么按结束时间排序这是经典的区间调度问题标准解法是贪心。贪心策略就一句话优先挑结束时间最早的那场。为啥这么选一场试玩结束得越早留给后面申请的时间窗口就越大后面能塞进去的场次就越多。每一步都给未来留余地总数自然最大。那能不能按开始时间排不行。举个反例三场申请[1,100]、[2,3]、[4,5]。按开始时间排先挑[1,100]后面两场全被它占掉只能安排 1 场。可按结束时间排挑[2,3]和[4,5]能安排 2 场。按区间长度挑最短的也不靠谱照样能造出反例。所以记住区间调度按结束时间排序从头往后扫能塞就塞。还有个细节。题目说允许连续[2,3]和[3,4]算不冲突。所以判断条件是下一场.start 上一场.end用不是差一个等号结果就错了。拿示例 1 验证一下三场[1,5]、[2,3]、[4,6]按结束时间排成[2,3]、[1,5]、[4,6]。先选[2,3]结束时间 3。[1,5]开始时间 1 小于 3跳过。[4,6]开始时间 4 大于等于 3选上。一共 2 场和答案对上。怎么实现读入n和n个区间。按结束时间升序排序结束时间相同的按开始时间排。第一场必选记下它的结束时间。从第二场开始扫如果当前场的开始时间上一场结束时间就选它更新结束时间。统计选中的场数输出。时间最大到10^9C/C 用long long存更稳避免溢出踩坑。说明原题文件在解题思路处截断只写到优先选择结束时间最早这里按常见的区间调度题型补全思路和代码。代码实现C 语言#includestdio.h#includestdlib.htypedefstruct{longlongs,e;}Seg;intcmp(constvoid*a,constvoid*b){Seg*x(Seg*)a,*y(Seg*)b;if(x-e!y-e)returnx-ey-e?-1:1;returnx-sy-s?-1:1;}intmain(){intn;if(scanf(%d,n)!1)return0;Seg*a(Seg*)malloc(n*sizeof(Seg));for(inti0;in;i){scanf(%lld,%lld,a[i].s,a[i].e);}qsort(a,n,sizeof(Seg),cmp);intcnt1;longlonglastEnda[0].e;for(inti1;in;i){if(a[i].slastEnd){cnt;lastEnda[i].e;}}printf(%d\n,cnt);free(a);return0;}C#includebits/stdc.husingnamespacestd;intmain(){intn;cinn;vectorpairlonglong,longlonga(n);for(inti0;in;i){charc;cina[i].firstca[i].second;}sort(a.begin(),a.end(),[](constautox,constautoy){if(x.second!y.second)returnx.secondy.second;returnx.firsty.first;});intcnt1;longlonglastEnda[0].second;for(inti1;in;i){if(a[i].firstlastEnd){cnt;lastEnda[i].second;}}coutcntendl;return0;}Javaimportjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);intnInteger.parseInt(sc.nextLine().trim());String[]partssc.nextLine().trim().split(\\s);long[][]anewlong[n][2];for(inti0;in;i){String[]pparts[i].split(,);a[i][0]Long.parseLong(p[0]);a[i][1]Long.parseLong(p[1]);}Arrays.sort(a,(x,y)-{if(x[1]!y[1])returnLong.compare(x[1],y[1]);returnLong.compare(x[0],y[0]);});intcnt1;longlastEnda[0][1];for(inti1;in;i){if(a[i][0]lastEnd){cnt;lastEnda[i][1];}}System.out.println(cnt);}}JavaScriptconstreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin});letlines[];rl.on(line,(line)lines.push(line.trim()));rl.on(close,(){constnparseInt(lines[0]);constpartslines[1].split(/\s/).slice(0,n);constaparts.map(p{const[s,e]p.split(,).map(Number);return[s,e];});a.sort((x,y)x[1]-y[1]||x[0]-y[0]);letcnt1;letlastEnda[0][1];for(leti1;in;i){if(a[i][0]lastEnd){cnt;lastEnda[i][1];}}console.log(cnt);});Pythonnint(input())partsinput().split()a[tuple(map(int,p.split(,)))forpinparts[:n]]a.sort(keylambdax:(x[1],x[0]))cnt1last_enda[0][1]foriinrange(1,n):ifa[i][0]last_end:cnt1last_enda[i][1]print(cnt)复杂度分析排序O(n * log n)一次扫描O(n)总时间复杂度O(n * log n)空间复杂度O(n)存所有区间n到 10 万O(n log n)完全跑得动不用考虑额外优化。总结一下这道题是区间调度的教科书案例记住三句话区间求最大不重叠数量按结束时间排序。从前往后扫能塞就塞。判断不打架用因为允许连续衔接。下次看到安排“最多能选几个”时间不冲突这类词先往活动安排问题上靠。容易踩的坑有两个一是顺手按开始时间排序结果被一个超长区间坑掉二是判断重叠时漏了等号把[2,3]和[3,4]误判成冲突。这两个点盯住基本就稳了。‍♂️你做区间题时最容易在哪一步翻车欢迎在评论区聊聊。

相关新闻

临沂太阳能控制器选型工艺与工程落地标准解析

临沂太阳能控制器选型工艺与工程落地标准解析

2026/7/14 5:46:55

一、太阳能控制器在临沂市场的工程应用背景临沂作为北方物流枢纽城市,其太阳能光伏产业近年来发展迅速。本地太阳能控制器应用主要集中在农村分布式光伏、农业灌溉系统、交通信号灯、市政照明等场景。由于该地区四季分明、光照资源充足且昼夜温差较大,对…

43.嵌入式C语言进阶:位带操作——给每个比特一个专属地址,解决GPIO操作的竞态问题

43.嵌入式C语言进阶:位带操作——给每个比特一个专属地址,解决GPIO操作的竞态问题

2026/7/14 5:46:55

一、问题&#xff1a;读-改-写的竞态条件在嵌入式开发中&#xff0c;我们经常需要操作GPIO寄存器&#xff0c;比如设置GPIOA的第5位输出高电平。通常我们会这样写代码&#xff1a;GPIOA->ODR | (1 << 5);但你知道吗&#xff1f;这一行代码在CPU层面会分成三步执行&…

【Java踩坑笔记】43_LIMIT大偏移量慢查询,你的分页写法过时了

【Java踩坑笔记】43_LIMIT大偏移量慢查询,你的分页写法过时了

2026/7/14 5:46:55

43 | LIMIT 大偏移量慢查询&#xff0c;你的分页写法过时了 摘要&#xff1a;LIMIT 100000, 10 要先读 100000 行再丢弃&#xff0c;即使有索引也很慢。延迟关联&#xff08;WHERE id > lastId&#xff09;是更好的分页方案。 一、问题现象 -- ❌ 慢查询&#xff1a;偏移量…

工业信号采集中的噪声抑制与隔离技术实践

工业信号采集中的噪声抑制与隔离技术实践

2026/7/14 8:17:07

1. 工业信号采集的噪声挑战与核心需求在钢铁冶炼、石油化工、电力传输等典型工业现场&#xff0c;信号采集系统面临着多重电磁干扰威胁。我曾参与某焦化厂温度监控系统改造&#xff0c;现场实测发现&#xff1a;当大功率变频器启动时&#xff0c;热电偶信号线上会感应出高达12V…

ROS2 GPG密钥过期故障解析:从NO_PUBKEY错误理解APT安全机制

ROS2 GPG密钥过期故障解析:从NO_PUBKEY错误理解APT安全机制

2026/7/14 8:17:07

1. 项目概述&#xff1a;从一次密钥过期故障说起 如果你正在使用ROS2&#xff0c;尤其是Ubuntu 22.04上的Humble版本&#xff0c;最近执行 sudo apt update 时&#xff0c;大概率会遇到一个令人困惑的报错&#xff1a;“由于没有公钥&#xff0c;无法验证下列签名&#xff1a…

Animavita宠物领养平台:如何快速找到您附近的宠物伙伴

Animavita宠物领养平台:如何快速找到您附近的宠物伙伴

2026/7/14 8:17:07

Animavita宠物领养平台&#xff1a;如何快速找到您附近的宠物伙伴 【免费下载链接】animavita Trigger life-saving alerts, register animals for adoption and find the closest pet friend to adopt :dog: 项目地址: https://gitcode.com/gh_mirrors/an/animavita 想…

Small RTOS51 实战手记(一):从零到一,在STC89C52上构建多任务LED流水灯

Small RTOS51 实战手记(一):从零到一,在STC89C52上构建多任务LED流水灯

2026/7/14 8:17:07

1. 初识Small RTOS51&#xff1a;51单片机的轻量级多任务引擎 第一次听说在STC89C52这样的51单片机上跑操作系统时&#xff0c;我的反应和多数嵌入式新手一样&#xff1a;"这玩意儿内存才128字节&#xff0c;能跑得动RTOS&#xff1f;" 但当我真正把Small RTOS51跑起…

Kuroba-Experimental终极指南:如何快速掌握Android图像板浏览器

Kuroba-Experimental终极指南:如何快速掌握Android图像板浏览器

2026/7/14 8:17:07

Kuroba-Experimental终极指南&#xff1a;如何快速掌握Android图像板浏览器 【免费下载链接】Kuroba-Experimental Free and open source image board browser 项目地址: https://gitcode.com/gh_mirrors/ku/Kuroba-Experimental Kuroba-Experimental是一款功能强大的免…

告别嵌套地狱:wr/write-pythonic-code-demos教你写出扁平优雅的Python代码

告别嵌套地狱:wr/write-pythonic-code-demos教你写出扁平优雅的Python代码

2026/7/14 8:07:07

告别嵌套地狱&#xff1a;wr/write-pythonic-code-demos教你写出扁平优雅的Python代码 【免费下载链接】write-pythonic-code-demos Write Pythonic Code Like a Seasoned Developer video course demo materials. 项目地址: https://gitcode.com/gh_mirrors/wr/write-python…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/13 7:41:16

Unity游戏文本翻译架构深度解析&#xff1a;XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南&#xff1a;为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/13 20:43:10

openEuler系统集成测试实战&#xff1a;基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载&#xff1a;…

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

XUnity.AutoTranslator 游戏实时翻译插件:从原理到实战的完整指南

2026/7/14 0:06:37

1. 项目概述&#xff1a;当游戏语言成为一堵墙作为一名玩了十几年日系、欧美独立游戏的“老油条”&#xff0c;我太懂那种面对一款心仪已久、画风玩法都戳中G点的游戏&#xff0c;却因为语言不通而望而却步的痛了。尤其是那些基于Unity引擎开发的、体量不大但内容精良的作品&am…

2026普通文员学数据分析的价值

2026普通文员学数据分析的价值

2026/7/14 0:06:37

一、2026年普通文员学习数据分析的必要性随着数字化转型加速&#xff0c;数据分析技能正逐渐成为职场基础能力。普通文员学习数据分析可以提升工作效率、增强竞争力&#xff0c;并为职业转型提供更多可能性。二、数据分析对文员的价值自动化办公&#xff1a;通过数据分析工具&a…

2026从计划员到主管,生产管理者学数据分析有用吗?

2026从计划员到主管,生产管理者学数据分析有用吗?

2026/7/14 0:06:37

一、生产管理领域的职业发展路径 从计划员到主管的角色转变&#xff0c;是生产管理者职业发展的典型路径。计划员主要负责生产排程、库存管理和资源协调等基础工作&#xff0c;而主管则需要承担团队管理、决策支持和效率优化等更高级别的职责。这种转变不仅仅是职位的提升&…