#P1469. 2024.9.27-秋招-第3题-病毒的传播
-
ID: 131
Type: Default
1000ms
256MiB
Tried: 356
Accepted: 61
Difficulty: 7
Uploaded By:
TaZi
Tags>BFS
2024.9.27-秋招-第3题-病毒的传播
题目内容
最近病毒肆虐,科学家为了研究病毒的传播轨迹,需要设计一套简易的传播模型。
在一张M∗N地图中,包含墙体,空地,已感染的人(不戴口罩),已感染的人(戴口罩),未感染的人(不戴口罩),未感染的人(戴口罩)。科学家会设置一些危险系数,以及感染阈值。然后观察未感染人群大概多少天以后会被感染。
位置含义的编码如下:
危险系数:为感染的人对周围的位置造成的风险(戴口罩和不戴口罩数值不同),每过一格,危险系数就减1。遇到墙体则不再进行传播。一个位置上如果出现多个传染源传播的危险系数,则危险系数使用多个危险系数的最大值。
感染阈值:为该位置的人被感染的门限(戴口罩和不戴口罩数值不同),当危险系数大于等于感染阈值,则该位置的人就会被传染。 注意:
1.判断当前位置是否感染只有一个条件,就是当前位置上的危险系数是否大于等于当前位置上的人的感染阈值。是否带口罩会影响危险系数和感染阈值的大小,从而间接的影响该位置的人是否会被感染。
2.未感染的人在感染后会在第二天变成已感染的人,比如未感染的人(戴口罩) 如果在第3天发现自己的感染阈值小于危险系数(也就是会被感染),那么在第4天该位置就会变成已感染的人(戴口罩).所以在第4天以后需要将该位置以及周围的危险系数刷新,这就有可能会感染其他更多的人。
输入描述
第一行: M,N,a1,a2,b1,b2用空格隔开,参数具体含义如下:
第二行到第M+2行:M行N列地图数据信息
输出描述
输出M行N列数据信息,每个位置需要输出的内容如下:
- 该位置没有人(空地或者墙壁)的话则返回−1
- 该位置的人初始态时就被感染了的话,则填0
- 该位置的人初始没有被感染,但是最终被感染,则填被感染的天数
- 该位置的人没有被感染,则返回−1
样例1
输入
3 4 7 10 6 2
0 0 0 0
2 0 1 5
0 0 0 0
输出
-1 -1 -1 -1
0 -1 -1 -1
-1 -1 -1 -1
说明
该用例中,初始地图中,第2行第1列处存在一个已感染并且不戴口罩的人,根据危险系数的配置信息,危险系数(不戴口罩)为10,所以该位置的危险系数为10,计算所有位置的危险系数如下:
可以看到因为墙的原因,第2行第4列位置上的危险系数为5,该位置上的人戴了口罩,该位置上的人感染阈值为6,则该人不会被感染。
样例2
输入
3 4 7 10 6 2
0 0 0 0
2 0 1 5
0 0 0 5
输出
-1 -1 -1 -1
0 -1 -1 2
-1 -1 -1 1
说明
该样例中,初始地图中,第2行第1列处存在一个已感染并且不戴口罩的人,根据危险系数的配置信息,危险系数(不戴口罩)为10,所以该位置的危险系数为10,计算所有位置的危险系数如下:
第2行第4列位置上的危险系数为5,该位置上的人戴了口罩,该位置上的人感染阈值为6,则该人在第一天不会被感染,
第3行第4列位置上的危险系数为6,该位置上的人戴了口罩,该位置上的人感染阈值为6,则该人在第一天会被感染。感染后该人会变成已感染的人(戴口罩)
第一天以后地图更新如下: 0 0 0 0 2 0 1 5 0 0 0 3
这时再计算第二天的危险系数,根据危险系数的配置信息,危险系数(戴口罩)为7,所以第3行第4列位置的危险系数为7,所有位置需要计算危险系数的最大值,如下图:
第二天,第2行第4列位置上的危险系数从5提升到了6,而该位置上的人感染阈值为6,则该位置的人会在第二天被感染。 最终结果如下:
−1 −1 −1 −1
0 −1 −1 2
−1 −1 −1 1
通知
扫码备注华为交流群~期待您的到来
- 湘ICP备2023007293号
- Worker 0, 25ms
- Powered by Hydro v4.14.1 Community