#ASC102. xw学长的传感器信号传播模拟

xw学长的传感器信号传播模拟

题目背景

xw学长正在调试一个分布式传感器网络。网络中有 n 个传感器排成一排,每个传感器有一个初始能量(表示它能够持续发送信号的时间)。初始时,有 k 个传感器被外部激活。每个时间单位,每个处于激活状态(且能量大于0)的传感器会消耗1单位能量,同时向其左右相邻的传感器发送激活信号(如果相邻传感器还未被激活,则被激活并开始工作)。当一个传感器的能量降为0时,它就停止工作。xw学长需要计算整个网络从开始激活到所有传感器停止工作所需的总时间,以验证网络设计的可靠性。

题目描述

给定 n 个传感器的初始能量(正整数)和 k 个初始激活传感器的位置。从时间 1 开始,初始激活的传感器开始工作。每个时间单位,激活的传感器(能量大于0)会消耗1单位能量,并尝试激活其左右相邻的传感器(如果相邻传感器未被激活,则被激活)。当一个传感器被激活后,它也会在下一个时间单位参与能量消耗和激活相邻传感器的过程。求所有传感器都停止工作(能量均为0)的总时间。

输入格式

第一行一个整数 n,表示传感器的数量

第二行 n 个整数,表示每个传感器的初始能量

第三行一个整数 k,表示初始激活传感器的个数

第四行 k 个整数,表示初始激活传感器的位置(位置从 0 开始编号)

输出格式

一个整数,表示所有传感器停止工作所需的总时间

样例

5
3 1 2 5 1
2
0 2
6

样例解释

网络中有 5 个传感器,初始能量分别为 [3, 1, 2, 5, 1],初始激活位置为 0 和 2。工作过程如下:

时间 1:位置 0 和 2 被激活,消耗 1 能量(变为 2 和 1),并激活位置 1 和 3

时间 2:位置 1 和 3 开始工作,消耗 1 能量(变为 0 和 4),并激活位置 4

时间 3:位置 4 开始工作,消耗 1 能量(变为 0)

时间 4:位置 0 消耗 1 能量(变为 1)

时间 5:位置 0 消耗 1 能量(变为 0)

时间 6:位置 3 消耗最后 1 能量(变为 0)

所有传感器停止工作需要 6 个时间单位。

数据范围

1k<n1051 \leq k < n \leq 10^5

传感器初始能量均为正整数,且不超过 10910^9

提示

  • 1.信号传播需要时间,且每个传感器的能量是独立的

  • 2.注意每个时间单位信号传播的规则:只有激活状态且能量大于0的传感器才会传播信号

  • 3.使用 BFS 可以高效模拟信号传播过程