学习C++从娃娃抓起!记录下洛谷C++学习和备考过程中的题目,记录每一个瞬间。
附上汇总贴:洛谷刷题C++语言 | 汇总
【题目描述】
您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 1 0 5 10^5 105 条):
- 插入与修改,格式
1 NAME SCORE
:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 S C O R E ( 0 < S C O R E < 2 31 ) SCORE(0<SCORE<2^{31}) SCORE(0<SCORE<231) 的学生。如果已经有同名的学生则更新这名学生的成绩为 SCORE。如果成功插入或者修改则输出OK
。 - 查询,格式
2 NAME
:在系统中查询姓名为 NAME 的学生的成绩。如果没能找到这名学生则输出Not found
,否则输出该生成绩。 - 删除,格式
3 NAME
:在系统中删除姓名为 NAME 的学生信息。如果没能找到这名学生则输出Not found
,否则输出Deleted successfully
。 - 汇总,格式
4
:输出系统中学生数量。
【输入】
无
【输出】
无
【输入样例】
5
1 lxl 10
2 lxl
3 lxl
2 lxl
4
【输出样例】
OK
10
Deleted successfully
Not found
0
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n, op, score;
string name;
map<string, int> m;
int main()
{
cin >> n;
while (n--) {
cin >> op;
if (op==1) {
cin >> name >> score;
m[name] = score;
cout << "OK" << endl;
} else if (op==2) {
cin >> name;
if (m.count(name))
cout << m[name] << endl;
else
cout << "Not found" << endl;
} else if (op==3) {
cin >> name;
if (m.count(name)) {
m.erase(name);
cout << "Deleted successfully" << endl;
} else
cout << "Not found" << endl;
} else {
cout << m.size() << endl;
}
}
return 0;
}
【运行结果】
5
1 lxl 10
OK
2 lxl
10
3 lxl
Deleted successfully
2 lxl
Not found
4
0