4.22华为OD机试真题 新系统 - 小学生班长选举增强版 (JavaPyCC++JsGo)

4.22华为OD机试真题 新系统 - 小学生班长选举增强版 (JavaPyCC++JsGo) 小学生班长选举增强版2026 华为OD机试真题 4月22日华为OD上机新系统考试真题 200 分题型点击查看华为 OD 机试真题完整目录2026最新华为OD机试新系统卷 双机位C卷 真题题库目录全覆盖题库 逐点算法考点详解题目描述9月份开学第一天小学某班级进行班长选举活动班级共有$N$个学生每个学生最多可投$3$票对同一个人只能投一票也可以弃权不投票大家投票时写上对应学生的名字假设学生不存在重名考虑到部分少数民族名字带分隔且整体较长同学在投票时为了方便允许同学写全称也可以只写其中的部分连续段比如班级里只有$2$个少数民族名称带点的同学$A$同学叫买买提-艾尔肯-巴图尔$B$同学叫买买提-艾尔肯-库尔班那要给$A$同学投票可以写 买买提-艾尔肯-巴图尔 或者 艾尔肯-巴图尔 或者 巴图尔但是不能写 买买、买买提-艾、肯-库尔班、肯-库这种某名字未写全的情况学生可以把票投给自己。得票最多的同学当选班长如果票数相同则按名字做字符串排序排序靠前的当选班长。如果选票上写的名字不合理要求投票的名字必需是连续的少数民族可以是连续的若干段但要求每段名称要写全选票上的名字需要能唯一匹配某个人则认为是无效票直接忽略。如果出现原始输入总选票数超过$3$倍班级总人数、某位同学的得票数超过班级总人数、没有一个同学被选中这些情况则认为选举无效返回固定字符串Invalid election.。现在投票环节已完成进入唱票环节请你完善代码根据投票数据给出当选班长对应的完整名称。 方法共$2$个参数第一个参数是全班同学的名称集合第二个参数是选票数据集合。考虑到部分语言对中文处理不太友好名称输入统一为普通的ASCII字符选票中少数民族名称中的连接符$\cdot$改用英文横杠连接符($-$)。2026 华为OD机试真题 4月22日华为OD上机新系统考试真题 200 分题型输入描述输入为一行包含两个参数分别是全班同学的名称集合和选票数据集合以逗号分隔。每个集合用方括号[]包围元素用双引号包围并以逗号分隔。例如[Zhangsan, Lisi, Wangwu],[Zhangsan, Lisi, Zhangsan]输出描述当选班长的完整名称示例1输入[Zhangsan, Lisi, Wangwu],[Zhangsan, Lisi, Zhangsan]输出Zhangsan说明Zhangsan得$2$张选票Lisi只得$1$张选票Zhangsan票数更高因此Zhangsan当选班长。示例2输入[Zhangsanfeng, Zhangsande],[Zhangsan, Zhangsande, Zhangsan]输出Zhangsande说明虽然Zhangsan有$2$张选票由于不属于班级成员对应选票无效因此获得$1$张选票的Zhangsande当选班长。示例3输入[maimaiti-aierken-batuer, maimaiti-aierken-kuerban],[batuer, aierken-batuer, maimaiti, maimaiti-aierken-kuerban]输出maimaiti-aierken-batuer说明batuer和aierken-batuer都能唯一匹配maimaiti-aierken-batuer因此maimaiti-aierken-batuer获得$2$票maimaiti因为有多个名字都匹配认定为无效票。maimaiti-aierken-kuerban能唯一匹配获得$1$票所以得票更多的maimaiti-aierken-batuer当选班长。解题思路核心思想预处理名字匹配映射为了快速判断选票上的名字是否能唯一匹配某个学生我们可以对全班每个学生的名字进行预处理。每个名字按连字符-分割成若干段。合法的缩写必须是这些段的连续组合例如A-B-C的合法缩写有A,B,C,A-B,B-C,A-B-C。使用一个哈希表mapping记录每个合法的缩写对应的完整名字。如果一个缩写对应多个不同的完整名字则在哈希表中标记为无效例如#INVALID#表示存在歧义。投票规则校验总票数校验总选票数不能超过全班人数 $N$ 的 3 倍。唯一匹配校验选票上的名字必须在mapping中存在且不具有歧义。得票数校验统计每位学生的有效得票数任何一位学生的得票数不能超过全班总人数 $N$。空选举校验如果没有产生任何有效选票选举无效。确定当选者在所有获得有效选票的学生中选出得票数最多的。如果票数相同则按照名字的字典序进行升序排序选择排序靠前者。复杂度分析时间复杂度$O(N \cdot M^2 T)$其中 $N$ 是学生人数$M$ 是名字的最大分段数通常很小$T$ 是选票总数。预处理每个名字的连续段需要 $O(M^2)$处理所有选票需要 $O(T)$。空间复杂度$O(N \cdot M^2)$用于存储名字缩写映射的哈