P5266 【深基17.例6】学籍管理(set+map
题目描述
传送门
您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 100000条):
插入与修改,格式1 NAME SCORE:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 SCORE(0<SCORE<10000) 的学生。如果已经有同名的学生则更新这名学生的成绩为 SCORE。如果成功插入或者修改则输出OK。
查询,格式2 NAME:在系统中查询姓名为 NAME 的学生的成绩。如果没能找到这名学生则输出Not found,否则输出该生成绩。
删除,格式3 NAME:在系统中删除姓名为 NAME 的学生信息。如果没能找到这名学生则输出Not found,否则输出Deleted successfully。
汇总,格式4:输出系统中学生数量。
输入格式
无
输出格式
无
输入输出样例
输入 #1
5
1 lxl 10
2 lxl
3 lxl
2 lxl
4
输出 #1
OK
10
Deleted successfully
Not found
0
又到了快乐的水博客 题解时间。
数据范围10的5次方,有删除,修改,查询操作,想到用set,但是题目又有字符串和数字组成的整体,可以用结构体把它们封装起来,但是题目又说已知字符串要求查找出分数,那么就用map了!
下面是喜闻乐见的代码
#include <iostream>
#include <algorithm>
#include <math.h>
#include <string>
#include <vector>
#include <map>
#include <stack>
#include <cstdio>
#include <list>
#include <queue>
#include <set>
using namespace std;
#define ll long long
set<string> sst;
map<string,int> mmp;
set<string>::iterator p;
int main(){
int n,a,i,x,m;
string s1;
cin>>n;
for(i=0