L2-3 智能护理中心统计
智能护理中心系统将辖下的护理点分属若干个大区,例如华东区、华北区等;每个大区又分若干个省来进行管理;省又分市,等等。我们将所有这些有管理或护理功能的单位称为“管理结点”。现在已知每位老人由唯一的一个管理结点负责,每个管理结点属于唯一的上级管理结点管辖。你需要实现一个功能,来统计任何一个管理结点所负责照看的老人的数量。
注意这是一个动态问题,即随时可能有老人加入某个管理结点,并且老人是有可能从一个管理结点换到另一个管理结点去的。
输入格式:
输入在第一行中给出 2 个正整数:N(≤104)是老人的总数量,即老人们从 1 到 N 编号;M(≤105)是归属关系的总数。
接下来是 M 行,每行给出一对归属关系,格式为:
A B
表示 A
归属于 B
。A
或 B
如果是某个管理结点,则用不超过 4 个大写英文字母表示其名称;如果是某位老人,则用老人的编号表示。这里每个 A
保证只有唯一的上级归属 B
,且只有这个中心系统本身是没有上级归属的。此外,输入保证没有老人自己承担管理结点的角色,即 B
一定是一个管理结点,不可能是老人的编号。但一个管理结点既可以管辖下级结点,也可以直接护理一部分老人。
随后每行给出一个指令,格式为:
指令 内容
如果 指令
为 T
,则表示有老人要入院或转院,内容
是某老人的编号和要去的管理结点的名称,以空格分隔;如果 指令
为 Q
,则 内容
是一个管理结点的名称,意思是统计这个结点所负责照看的老人的数量;如果 指令
为 E
,则表示输入结束。题目保证指令总数不会超过 100 个。
输出格式:
对每个 T
指令,将对应的老人转存到对应的管理结点名下;对每个 Q
指令,在一行中输出对应管理结点所负责照看的老人的数量。读到 E
指令就结束程序。
输入样例:
10 23
EAST CNTR
ZJ EAST
SD EAST
WEST CNTR
SX WEST
HZ ZJ
JN SD
2 JN
8 JTH
6 XAHP
4 ZDYH
5 ZDYH
ZDYH HZ
HUZ ZJ
JX ZJ
1 JX
3 JN
WZ ZJ
XAHP XIAN
XIAN SX
YL SX
JTH XIAN
7 XAHP
Q EAST
T 1 YL
Q EAST
Q SX
T 8 ZDYH
Q HZ
Q HUZ
T 10 XAHP
Q CNTR
E
输出样例:
5
4
4
3
0
9
代码长度限制
16 KB
Java (javac)
时间限制
2500 ms
内存限制
512 MB
其他编译器
时间限制
2500 ms
内存限制
64 MB
代码:
#include<bits/stdc++.h>
using namespace std;
int n, m;
unordered_map<string, string>older; //老人和他的管理员
unordered_map<string, vector<string>>rooter; //每个管理员手下的管理员们
unordered_map<string, int>olders; //每个管理员管理的老人数量
//用dfs会溢出,所以用bfs
int getSum(string r) {int sum = 0;queue<string>names;//用于存放r和他手下的所有的管理员姓名names.push(r);//将r的姓名存入//如果names==0了,说明没有管理员了while (names.size()) {string name = names.front(); //获取队首的姓名,用于查询names.pop();//队首已经被使用了,将它删除sum += olders[name]; //加上 name 这个管理员管理的老人数量for (string i : rooter[name]) {names.push(i);//将name这个管理员手下的所有管理员也添加到队列中}}return sum;
}
int main() {cin >> n >> m;while (m--) {string a, b;cin >> a >> b;if (a[0] >= 'A' && a[0] <= 'Z') {rooter[b].push_back(a);//给管理员 b 添加手下 a;} else {older[a] = b; //将老人a的管理员设置为b++olders[b];//b管理的老人数量+1}}char c;while (cin >> c) {string o, r;if (c == 'T') {//老人要入院或转院cin >> o >> r;string name = older[o]; //获取老人的管理员姓名if (name != "")--olders[name]; //如果老人有管理员,将对应管理员的老人数量-1older[o] = r; //将老人的管理员姓名设置为r++olders[r];// 管理员r的老人数量+1} else if (c == 'Q') {cin >> r;cout << getSum(r) << endl;} else break;}return 0;
}
L2-3 智能护理中心统计相关推荐
- 2022 RoboCom 世界机器人开发者大赛-高职组 国赛(RC-v3 智能护理中心统计)
RC-v3 智能护理中心统计 题意: 给出各管理节点的关系,和每个管理节点的照护老人数量. 两种操作:1. 转院. 2. 查询 该管理节点以下总的老人人数. 知识点: 树. #include<b ...
- PTA 智能护理中心统计
智能护理中心系统将辖下的护理点分属若干个大区,例如华东区.华北区等:每个大区又分若干个省来进行管理:省又分市,等等.我们将所有这些有管理或护理功能的单位称为"管理结点".现在已知每 ...
- 智慧养老解决方案之“RFID养老院智能护理系统“打造临床医护管家
近年来,我国医患矛盾加剧.因养老院护理不当引发的医患纠纷屡有发生.苏州新导智能与无锡市第三人民养老院合作研发,在国内首次推出基于超高频无线射频识别(RFID)技术和云计算中间件管理平台的智慧养老解 ...
- 数字冰雹 数字孪生城市智能运营中心(IOC)可视化决策系统
产品概述 数字时代,以5G通讯.物联网.云计算.大数据.人工智能为代表的新一代信息技术蓬勃发展,深入影响着城市运行的方方面面,广泛应用于数字城管.智慧社区.应急管理.智慧环保等领域,推动城市管理向数 ...
- AI智能呼叫中心系统,主要应用场景有哪些?
互联网智能时代,销售人员不再每天拨打数百个电话,当前呼叫中心电话系统被企业常用在电销行业.金融行业.保险.贷款催收行业等外呼销售行业.由传统的呼叫中心基础上不断的进行升级和改善,逐渐演变为人工智能电话 ...
- 弘玑Cyclone RPA助力东兴证券建立智能财务中心,以自动化为业务提质增效
当前,飞速发展的数字技术可以助力企业建立智能财务服务中心,成为智能化转型的催化剂. 在此大背景下,弘玑Cyclone携手东兴证券股份有限公司(以下简称"东兴证券"),为实现更高成本 ...
- 基于人工智能和物联网的“智能护理
导语 本文将以老年智能护理为例解释如何使用Waylay平台结合不同的AI技术.该项目的核心目标是提供一种解决方案:向护理人员和家人确认他们所照顾的人员健康情况.下图介绍了所有相关的参与者. 在这个用例 ...
- 华为服务器bmc默认地址_智能数据中心和智慧园区:华为的单点突破与全局效应...
如果说过去的数据中心和园区的更新发展主要遵循摩尔定律的话,那么在如今5G.物联网.大数据.人工智能等新ICT技术喷薄而发的时代中,数据已经成为数字化世界中的生产资料,其重要性与日俱增.因此,数据中心和 ...
- 人工智能在语音和数字图像处理领域有哪些具体化应用_智能呼叫中心系统有哪些优势...
近年来,随着科技的发展特别是人工智能技术.云计算.大数据的到来,新技术逐渐渗入人们日常生活中的各行各业里面,以机器人来代替人工处理繁重的任务变得普遍.在人工智能时代下,新一代智能呼叫中心系统应运而生, ...
最新文章
- 手动增加swap空间
- 编译有哪些阶段,动态链接和静态链接的区别 c++
- 解决jodconverter 2.2.1 版本不支持docx、xlsx、pptx 转换成PDF格式异常
- springboot整合activiti报错[processes/]不存在解决方案
- hyperion卫星重访时间_观摩卫星发射|2020第四届全球物联网大会上让我们一起去“放星”...
- js 经常用到的键盘码
- linux目标文件链接命令,ld 命令:将目标文件链接为可执行程序 - dute.org
- rsync 安装 配置 实例
- qt qstandarditemmodel rowcount获取行数不正确_MIL+QT实践教程十
- 模组管理器功能模块热插拔流程
- 计算机免费取名,电脑免费取名
- python 图表控件_10款好用的.NET图表控件推荐
- 笔记本计算机故障与诊断,笔记本电脑维护与故障诊断
- 【JSTL】choose标签
- HDU - 6438 优先队列,+贪心。
- payscale 美国计算机专业,2016PayScale美国大学排名:计算机专业
- 一款利用PIN管设计的可调衰减器
- 细说内网横向工具WMIHACK
- MSF Project Management Discipline
- [台剧]《倚天屠龙记》永远的经典——孙兴版杨逍