PTA 智能护理中心统计(树)

这篇具有很好参考价值的文章主要介绍了PTA 智能护理中心统计(树)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目

智能护理中心系统将辖下的护理点分属若干个大区,例如华东区、华北区等;每个大区又分若干个省来进行管理;省又分市,等等。我们将所有这些有管理或护理功能的单位称为“管理结点”。现在已知每位老人由唯一的一个管理结点负责,每个管理结点属于唯一的上级管理结点管辖。你需要实现一个功能,来统计任何一个管理结点所负责照看的老人的数量。

注意这是一个动态问题,即随时可能有老人加入某个管理结点,并且老人是有可能从一个管理结点换到另一个管理结点去的。

输入格式:

输入在第一行中给出 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

题解

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @author akuya
 * @create 2023-10-30-15:24
 */
public class Main {
    static int n,m;
    static Map<String,String> mp=new HashMap<>();
    static Map<String,Integer> sum=new HashMap<>();
    static Map<String,String> place =new HashMap<>();
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        m=scanner.nextInt();
        String s1,s2,ts;
        while(m--!=0){
            s1=scanner.next();
            s2=scanner.next();
            if(s1.charAt(0)<'0'||s1.charAt(0)>'9'){
                mp.put(s1,s2);
                ts=s2;
                while(ts!=""){
                    sum.put(ts,sum.getOrDefault(ts,0)+sum.getOrDefault(s1,0));
                    ts=mp.getOrDefault(ts,"");
                }
            }else{
                place.put(s1,s2);
                ts=s2;
                while(ts!=""){
                    sum.put(ts,sum.getOrDefault(ts,0)+1);
                    ts=mp.getOrDefault(ts,"");
                }
            }
        }

        String s;
        s=scanner.next();
        while(!s.equals("E")){
            if(s.equals("T")){
                s1=scanner.next();
                s2=scanner.next();
                String ss=place.getOrDefault(s1,"");
                while(ss!=""){
                    sum.put(ss,sum.getOrDefault(ss,0)-1);
                    ss=mp.getOrDefault(ss,"");
                }

                place.put(s1,s2);
                ss=s2;
                while(ss!=""){
                    sum.put(ss,sum.getOrDefault(ss,0)+1);
                    ss=mp.getOrDefault(ss,"");
                }
            }else{
                s1=scanner.next();
                System.out.println(sum.getOrDefault(s1,0));
            }

            s=scanner.next();

        }

    }
}

思路

本题存在多个关系,一颗普通的数不太容易存储,因此使用map来把各各数据存储,难点在于维护该结构,在建立关系后注意委会的关联性即可解决。文章来源地址https://www.toymoban.com/news/detail-715737.html

到了这里,关于PTA 智能护理中心统计(树)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构和算法】寻找数组的中心下标

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列长度 2.1.4 寻找数组中第 k 小的元素 2

    2024年02月04日
    浏览(53)
  • 物联网毕设 -- 医院病人智能护理监测(LORA+STM32)

    目录 前言 一 连线图 1 原理图 2 PCB效果 3 实物效果 4 APP效果(本项目不适应) 5 功能概括 (1)护士端: (2)病人端: (3)云平台使用(阿里云)(本项目不适应) (4)演示视频 二 底层代码使用方式 1. 使用说明 2. 下载程序 三 APP使用方式(本项目不适应) 四 程序修改部

    2024年02月21日
    浏览(48)
  • 区域人数统计AI智能分析网关V4客流统计AI算法介绍及应用场景

    客流量统计AI算法是一种基于人工智能技术的数据分析方法,通过机器学习、深度学习等算法,实现对客流量的实时监测和统计。该算法主要基于机器学习和计算机视觉技术,其基本流程包括图像采集、图像预处理、目标检测、目标跟踪和客流量统计等步骤,通过在监控视频

    2024年02月21日
    浏览(55)
  • 边缘计算AI智能分析网关V4客流统计算法的概述

    客流量统计AI算法是一种基于人工智能技术的数据分析方法,通过机器学习、深度学习等算法,实现对客流量的实时监测和统计。该算法主要基于机器学习和计算机视觉技术,其基本流程包括图像采集、图像预处理、目标检测、目标跟踪和客流量统计等步骤,通过在监控视频

    2024年01月18日
    浏览(44)
  • 【每日算法 && 数据结构(C++)】—— 01 | 平方值去重统计(解题思路STL法,双指针法、流程图、代码片段)

    “Success is not final, failure is not fatal: It is the courage to continue that counts.” - Winston Churchill (成功并非终点,失败并非致命:真正重要的是继续前行的勇气 - 温斯顿·丘吉尔) 给你一个整数数组,数组中的数可以是正数、负数、零,请实现一个函数,返回这个数组中所有数的平方

    2024年02月12日
    浏览(54)
  • 视频监控业务平台羚通视频智能分析平台无人机统计人数算法在人数统计中的应用策略

    随着科技的飞速发展,视频监控业务平台在各个领域的应用越来越广泛。其中,羚通视频智能分析平台凭借其先进的人工智能技术,为监控视频的智能化分析和处理提供了强大的支持。在众多应用中,无人机统计人数算法在人数统计方面的表现尤为突出。本文将深入探讨视频

    2024年02月03日
    浏览(51)
  • 数据结构和算法是人工智能的基石

       数据结构和算法是计算机科学的基石,是计算机的灵魂, 要想成为计算机专业人员,学习和掌握算法是十分必要的。不懂数据结构和算法的人不可能写出效率更高的代码。计算机科学的很多新行业都离不开数据结构和算法作为基石,比如大数据、人工智能等。底层开发

    2024年02月05日
    浏览(39)
  • java 会员中心管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

    一、源码特点     JSP 会员中心管理系统 是一套完善的系统源码,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,以及相应配套的设计文档,系统主要采用B/S模式开发。     研究的基本内容是基于Web的会员中心管理系统,使用JSP作为页面开发工具。W

    2024年02月11日
    浏览(61)
  • 电教智能云数据可视化平台开发电能优化日志实录

    在 PHP 中, @ 符号被称为错误抑制操作符。当在表达式之前使用 @ 符号时,它会告诉 PHP 忽略该表达式可能产生的任何错误或警告消息。 使用 @ 符号的主要目的是在运行时隐藏错误消息,以防止它们显示在最终的用户界面上。然而,过度使用错误抑制符可能会导致问题的隐藏

    2024年02月14日
    浏览(54)
  • 7-1 抢红包(PTA - 数据结构)

    没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。 输入格式: 输入第一行给出一个正整数N(≤104),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:

    2024年01月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包