#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,且全为小写英文字母。
  • 名字可以重复出现。
  • 保证至少存在一个候选人。

💡 解题思路与实现建议

  1. 使用 map<string, int> 统计每个候选人的票数;
  2. 将统计结果转换为 vector<pair<string, int>>
  3. 按如下排序规则:
    • 票数多的排前面;
    • 若票数相同,名字字典序大的排前面;
  4. 输出排序后的每一对 名字 票数