洛谷P5266 【深基17.例6】学籍管理

📅 2026/7/11 19:53:36
洛谷P5266 【深基17.例6】学籍管理
您要设计一个学籍管理系统最开始学籍数据是空的然后该系统能够支持下面的操作不超过条插入与修改格式 1 NAME SCORE在系统中插入姓名为(由字母和数字组成不超过个字符的字符串区分大小写)分数为 的学生。如果已经有同名的学生则更新这名学生的成绩为。如果成功插入或者修改则输出 OK。查询格式 2 NAME在系统中查询姓名为的学生的成绩。如果没能找到这名学生则输出 Not found否则输出该生成绩。删除格式 3 NAME在系统中删除姓名为的学生信息。如果没能找到这名学生则输出 Not found否则输出 Deleted successfully。汇总格式 4输出系统中学生数量。输入格式第一行输入一个正整数表示操作数量。接下来行每行先输入一个正整数表示操作种类。接着如果则再输入一个字符串以及一个正整数含义见题目描述。如果则再输入一个字符串含义见题目描述。如果则再输入一个字符串含义见题目描述。如果则无需再输入其他内容。输出格式共输出行每行输出一个字符串或正整数为对应操作的处理结果具体含义见题目描述。输入输出样例 #1输入 #151 lxl 102 lxl3 lxl2 lxl4输出 #1OK10Deleted successfullyNot found0思路合理运用STL的map容器映射什么是mapmap的含义与我们所学的函数类似,即mapx,y表示x-y的一个映射x和y也是一一对应的。例如mapstring,int a;定义了一个映射a含义是一个string类型的变量对应一个int类型的数字对于此题的学生姓名和分数来说再合适不过了而且map还支持赋值运算例如我们要让name对应的数为scorea[name]score;即可这题简直就是为map定制的啊函数为了方便这里我给出一些map的成员函数a.count(x) 再a里寻找x下标的元素找到了返回1否则返回0a.erase(x) 删除下标为x的元素a.size(x) 返回a的大小元素个数ACcode:#includebits/stdc.h#define ll long longusing namespace std;const int N1e55;int q;mapstring,int m;int main(){ios::sync_with_stdio(0);cinq;while(q–){int op,score;string name;cinop;if(op!4) cinname; //出现4就不用读名字了switch(op){case 1:cinscore;m[name]score;cout“OK”endl;break;case 2:if(m.count(name)) coutm[name]endl;else cout“Not found”endl;break;case 3:if(m.count(name)){m.erase(name);cout“Deleted successfully”endl;}else cout“Not found”endl;break;case 4:coutm.size()endl;break;}}return 0;}//Author:AAA_jiancaipifa