#9806. 宇宙总统2
宇宙总统2
🧭 任务总览
- 题目名称: 宇宙总统竞选
- 题目编号: P10701(示例编号)
- 难度星级: ⭐⭐☆
- 题目类型: 哈希统计 + 字典序排序
- 适用范围: 字符串处理、STL 应用、排序自定义
📖 题目描述
地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有 n
个非凡拔尖的人参与竞选。
现在投票已经结束,得票最多的人将荣登总统宝座。如果有多人得票数相同,则名字字典序(拼音)最大的候选人将胜出。
请你编程统计每位候选人的得票数,并按规则输出。
📥 输入格式
- 第一行输入一个整数
n
,表示投票总数(1 ≤ n ≤ 1000)。 - 接下来
n
行,每行输入一个字符串,表示一张选票(字符串仅包含小写拼音字母,无空格)。
📤 输出格式
输出若干行,表示每个得票候选人及其票数,格式为:
名字 得票数
- 要求按得票数从高到低排序;
- 若票数相同,按名字字典序从大到小排序(即字典序大的排前面)。
📌 样例输入
10
liming
wangfang
zhangguoqiang
zhangguoqiang
wangfang
zhangguoqiang
zhaofei
zhaofei
wangfang
zhaofei
🎯 样例输出
zhaofei 3
zhangguoqiang 3
wangfang 3
liming 1
🧠 样例说明
共 10 张选票,统计后:
- zhaofei:3 票
- zhangguoqiang:3 票
- wangfang:3 票
- liming:1 票
其中票数最多的是 3 票的三人,因 zhaofei
在字典序中最大,因此排在最前。
🧩 数据范围与边界说明
- 名字长度不超过 20,且全为小写英文字母。
- 名字可以重复出现。
- 保证至少存在一个候选人。
💡 解题思路与实现建议
- 使用
map<string, int>
统计每个候选人的票数; - 将统计结果转换为
vector<pair<string, int>>
; - 按如下排序规则:
- 票数多的排前面;
- 若票数相同,名字字典序大的排前面;
- 输出排序后的每一对
名字 票数
。