视频加载失败

P2580 于是他错误的点名开始了 题解

P2580 于是他错误的点名开始了 题解
340 字
2 分钟
P2580 于是他错误的点名开始了 题解

“普及/提高-”这个难度很有意思(当时还叫这个名字啊)。

说明这题可能需要用到提高组当中比较基础的内容。

它的名字叫做 map。


map<int, int> a;
a[7] = 5;
map<string, int> score;
score["Leo2011"] = 400;

map,其实相当于一个超大数组,但它真实的作用是:映射。比如 a[7] = 5;就是用 a 数组把 7 和 5 关联了起来,这个操作就叫映射。

map 这东西 NB 的地方在于,它能这么写:score["Block_Fish"] = 400;。哎对,这个类似下标的玩意儿就是个字符串!

有了这不好办了?拿这玩意儿记录一下有没有,然后分类判断即可。


ACCode:

#include <bits/stdc++.h>
using namespace std;
unordered_map<string, int> mp; // map 会自动排序,此时访问时间复杂度为O(logn),unordered_map 不排序,时间复杂度O(1)
// 因为 `map` 的底层是红黑树,作为一种平衡树;而 unordered_map 底层是哈希。因此,对于 pair 之类的东西,要用 map 那就需要定义一个比较器,要用 unordered_map 就要定义一个冲突概率较低的哈希函数。
int m, n;
string s;
int main() {
scanf("%d", &n);
for (int i = 1;i <= n;i++) {
cin >> s;
mp[s] = 1;
}
scanf("%d", &m);
for (int i = 1;i <= m;i++) {
cin >> s;
if (mp[s] == 1) {
printf("OK\n");
mp[s] = 2;
}
else
if (!mp[s])
printf("WRONG\n");
else
printf("REPEAT\n");
}
return 0;
}

AC记录

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
P2580 于是他错误的点名开始了 题解
https://www.leo2011.eu.org/posts/luogu-p2580/
作者
Block_Fish
发布于
2024-01-18
许可协议
SATA

评论区

Profile Image of the Author
Block_Fish
大胆假设,小心求证。——胡适
公告
网站全面重构,有问题欢迎联系积木鱼!
分类
标签
最新动态
站点统计
文章
56
分类
7
标签
17
总字数
84,805
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Netlify CI
博客版本
Firefly v6.16.8
文章许可
SATA

当前页面没有目录

文章目录

当前页面没有目录