洛谷 P5266 【深基17.例6】学籍管理 题解
题目描述
您要设计一个学籍管理系统,最开始学籍数据是空的,然后该系统能够支持下面的操作(不超过 10^5105 条):
- 插入与修改,格式
1 NAME SCORE
:在系统中插入姓名为 NAME(由字母和数字组成不超过 20 个字符的字符串,区分大小写) ,分数为 \texttt{SCORE}SCORE(0<\texttt{SCORE}<2^{31}0<SCORE<231) 的学生。如果已经有同名的学生则更新这名学生的成绩为 SCORE。如果成功插入或者修改则输出OK
。- 查询,格式
2 NAME
:在系统中查询姓名为 NAME 的学生的成绩。如果没能找到这名学生则输出Not found
,否则输出该生成绩。- 删除,格式
3 NAME
:在系统中删除姓名为 NAME 的学生信息。如果没能找到这名学生则输出Not found
,否则输出Deleted successfully
。- 汇总,格式
4
:输出系统中学生数量。
输入格式
第一行一个整数q,代表q次访问
接下来q行,每行代表一次访问
输出格式
q行,第i行表示第i次访问结果
分析:
这是一道map的题目,只需要了解map基本操作即可。
map基本操作:
1.插入元素
// 定义一个map对象
map<int, string> map;
// 第一种 用insert函數插入pair
map.insert(pair<int, string>(000, "student_zero"));
// 第二种
map.insert(map<int, string>::value_type(001, "student_one"));
// 第三种
map[123] = "student_first";
map[456] = "student_second";
2.查找元素
// find 返回迭代器指向当前查找元素的位置否则返回map::end()位置
iter = mapStudent.find("123");
if(iter != mapStudent.end())cout<<"Find, the value is"<<iter->second<<endl;
elsecout<<"Do not Find"<<endl;
3.删除元素和清空元素
//迭代器刪除
iter = mapStudent.find("123");
mapStudent.erase(iter);//用关键字刪除
int n = mapStudent.erase("123");//用迭代器范围刪除 : 把整个map清空
mapStudent.erase(mapStudent.begin(), mapStudent.end());
//等同于mapStudent.clear()
4.map的大小
int nSize = map.size();
有了以上这些基本操作,AC代码便可轻松写出
# include <iostream>
# include <cstdio>
# include <map>
using namespace std;
int q,cnt;
map <string,long long> m;
int main(){scanf("%d",&q);for (int i=1;i<=q;i++){int ctrl;scanf("%d",&ctrl);if (ctrl==1){string n;int s;cin>>n>>s;m[n]=s;printf("OK\n");}else if (ctrl==2){string n;cin>>n;if (m.find(n)!=m.end()){printf("%d\n",m[n]);}else{printf("Not found\n");}}else if (ctrl==3){string n;cin>>n;if (m.find(n)!=m.end()){m.erase(n);printf("Deleted successfully\n");}else{printf("Not found\n");}}else if (ctrl=4){printf("%d\n",m.size());}}return 0;
}
禁忌直接抄代码,要在理解的基础上自主写出
总结:
这题直接使用map容器便可轻松写出,难点在于对map的掌握
制作不易,点个赞吧~
洛谷 P5266 【深基17.例6】学籍管理 题解相关推荐
- 洛谷 P3373 【模板】线段树 2 题解
洛谷 P3373 [模板]线段树 2 题解 题面 题目链接:[戳这里](https://www.luogu.org/problemnew/show/P3373) 题目描述 输入输出格式 输入输出样例 ...
- 洛谷试炼场 P1553 数字反转(升级版)题解
洛谷试炼场 P1553 数字反转(升级版)题解 [c] 题目描述 给定一个数,请将该数各个位上数字反转得到一个新数. 这次与NOIp2011普及组第一题不同的是:这个数可以是小数,分数,百分数,整数. ...
- 洛谷P2738 [USACO4.1]篱笆回路Fence Loops 题解
洛谷P2738 [USACO4.1]篱笆回路Fence Loops 题解 题目链接:P2738 [USACO4.1]篱笆回路Fence Loops 题意:农夫布朗的牧场上的篱笆已经失去控制了.它们分成 ...
- 洛谷P3131 [USACO16JAN]Subsequences Summing to Sevens S 题解
洛谷P3131 [USACO16JAN]Subsequences Summing to Sevens S 题解 题目链接:P3131 [USACO16JAN]Subsequences Summing ...
- 洛谷P5266 【深基17.例6】学籍管理
此题为洛谷官方比赛题,鄙人AK.... 你可以选择用map扫描,或者stack队列,但我认为那些太高大上了,所以写了一个struct(结构体,给新手看的 ) 话不多说,直接上AC代码,Ctrl+C去吧 ...
- 深入理解 操作系统 SJF算法(以洛谷P1223题为例)
CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...
- 深入理解 操作系统 LRU算法(以洛谷P1540题为例)
LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...
- 【洛谷OJ C++】洛谷题单100 入门1顺序结构 题解及学习笔记
洛谷平台题单100链接:https://www.luogu.com.cn/training/100#problems 目录 学习笔记: P1001 A+B Problem P1000 超级玛丽游戏 P ...
- 【LGR-142-Div.4】洛谷入门赛 #13 考后分析与题解
洛谷入门赛 #Round 13 比赛分析与总结 T1 魔方 题目背景 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 数据规模与约定 分析 AC代码 注意 T2 教学楼 ...
- 【洛谷OJ C++】洛谷题单101 入门2分支结构 题解及学习笔记
洛谷题单101链接:https://www.luogu.com.cn/training/101#problems 笔记及题解目录: 学习笔记: P5710 [深基3.例2]数的性质 P5711 [深基 ...
最新文章
- 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(三):为枚举类型创建方法
- DL之SSD:SSD算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- linux开机自动启动(自启动)脚本、程序(初始化脚本)(海康摄像头自启动程序)
- 中心化(又叫零均值化)和标准化(又叫归一化)
- 16.枚举中的option和result.rs
- 结合zxing 和zbar 扫一扫
- 十大经典排序算法系列
- Swing写qq聊天软件(想要QQ表情@我呦)
- e480win7显卡驱动_win7系统联想e480安装的操作方法
- ISO20000/ISO27001认证区别和证书展示
- nginx跨域配置步骤
- python中如何判断词性_Python自然语言处理 5 分类和标注词汇
- b类 蚂蚁金服_终于拿到蚂蚁金服Offer!!!分享一下全程面试题和面试经验!...
- [2017湖南集训7-8]暗牧 虚树+最短路
- Snipaste——一款强大又实用的截图工具
- linux使用yum安装ruby,yum安装ruby_安装 Ruby
- 民间秘术——各类求仙方法
- 凯立德car 3.0 夏季版 升级过程(备忘)
- 武汉光庭总经理苏晓聪:智能网联控制器实践与创新
- 笔试编程题——数组中出现次数超过一半的数字