欢乐赛T4题解(时间击败100%)
2025-08-26 21:43:27
发布于:广东
6阅读
0回复
0点赞
解题思路
显然,这道题的题面是很易懂的,重点在于如何将名字对应上LP
名字是一个字符串,LP是一个整数,合在一起就是一个键值对,因此我们可以建一个map
题目要求按输入顺序输出,很显然直接遍历map顺序不对,因此我们还需要建一个动态数组或队列来存名字。可是直接存可能会重复,因此可以使用set去重。
(set容器的插入函数insert会返回一个pair,first是指向插入元素的迭代器,second是一个布尔值,代表是否插入成功,这样就可以直接判断是否重复)
具体代码
#include <bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(NULL);
unordered_map<string, int> c; //建立一个映射用于存储LP
vector<string> name; //建立一个动态数组用于存储
unordered_set<string> na; //建立一个集合用于查重
string list = "";
while(list != "0"){
cin >> list;
c[list]++;
if(na.insert(list).second)
name.push_back(list);
}
for(auto n:name){
if(n!="0")
cout << n << ' ' << c[n] << endl;
}
}
这里空空如也
有帮助,赞一个