Outis9 / DS1_Final_Exam

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DS1_Final_Project

(一)病毒株种类

[问题描述]

2019年末一种从未出现过的新型病毒开始在全球迅速蔓延,并且不断变异,人类社会面临了极大的威胁。全球科学家开始共同抗疫。科学家通过研究发现,两种病毒之间可能存同类关系和相克关系。而且有以下二点是肯定的。第一,病毒A的同类病毒的同类病毒也一定是病毒A的同类;第二,病毒A的相克病毒的相克病毒也一定是病毒A的同类病毒。两种病毒是一个病毒株的当且仅当它们是同类。现在给你一些关于病毒关系的信息,问你至多有多少种不同病毒株。

[输入数据]

输入的第一行为N(2<=N<=1000),表示病毒的种类数(从1编号到N)。

第二行M(1<=M<=100000),表示病毒关系信息的条数。

以下M行,每行可能是S p q或是H p q,分别表示p和q是同类病毒,或是相克病毒。 假设输入不会产生矛盾。

[输出数据]

输出只有一行,表示最大可能的病毒株数。

[输入样例]

6

4

S 2 4

H 1 3

H 3 5

S 1 6

[输出样例]

3

[样例说明]

该样例最多有3个病毒株,分别是1、5、6号病毒为一个病毒株,2、4号病毒为一个病毒株,3号病毒为一个病毒株。

[测试数据要求]

输入数据在virus.in 文件中;输出数据在virus.out文件中。

(二)核酸检测系统

1. 系统功能

2022年3月奥密克戎变异株迅速席卷东方帝国的魔都,攻破了魔都苦心构筑多年的精准防疫铜墙铁壁。魔都人民奋起抗击,开展了全民覆盖的核酸检测。为了更迅速开展检测,寻找确诊者、密接者和次密接者,需要开发一套核酸检测系统。系统需要有以下6个功能:

(1)排队:输入人员代码,并选择混合测试还是单人测试。将人员代码加入到相应队伍排队。人员代码是一个8位(xxxyyyyz)的数字,其中xxx表示楼栋号(000999);yyyy表示房间号,例如:0801、1801等;z代表一个房间中人员序号(19)。

(2)检测:选择混合测试还是单人测试。相应队伍中最前面的人员进行测试,混合测试每10人一个测试管;单人测试一人一管。每个测试管对应一个管号,管号是一个5位(kbbbb)的数字,其中k为0表示混合测试管,k为1表示单人测试管;bbbb是一个流水号,从0000开始自动生成。

(3)查看排队情况:按排队先后顺序,分别显示混合测试和单人测试排队人员的代码。

(4)登记测试管信息:输入测试管编号和测试结果。混合测试结果分为阴性、阳性和可疑三种。对阴性测试管对应的人员标记阴性状态;对阳性单人管测试人员标记确诊状态;对阳性混合管和可疑管人员标记可疑状态。并且对于确诊人员,其同一栋楼人员以及测试时排在他前面的10人和后面的人设置为密接者;密接者的同一栋楼人员为次密接者。

(5)各类人员查询:可以分类显示阴性、确诊、可疑、密接、次密接、待上传结果、在排队7种状态的人员代码。

(6)个人查询:输入人员代码,显示其当前状态。当前状态包括:阴性、确诊、可疑、密接、次密接、等待上传结果、在排队和未检测8种状态(未检测状态表示他没有参加排队检测)。

2. 初始化数据文件

为了方便测试,系统启动时可以从文件读入初始排队信息和检测信息。初始排队信息文件第一行二个正整数n和m(1<n,m<10000),分别混合测试和单管测试的排队人数。接下来n行是混合测试人员的编号,在混合测试人员编号后面是m行单管测试人员信息。初始测试信息文件中有一行二个正整数x(0<x<=n)和y(0<y<=m),分别表示已经完成混合测试和单人管测试的人数。

About


Languages

Language:C++ 98.3%Language:CMake 1.7%