#P15283. [MCO 2024] Knights
[MCO 2024] Knights
说明
有 个骑士,编号 到 ,站成一排。第 个骑士的力量为 。
骑士们正在参加一场马上枪术锦标赛。为此,每个骑士需要将他的剑指向左侧或右侧。若 ,则第 个骑士将剑指向左侧;若 ,则指向右侧。其中 是一个长度为 的二进制字符串。
一场 枪术对决 定义为如下过程:
- 初始时所有骑士均存活。
- 令 为按编号升序排列的仍存活骑士的列表, 为 的大小。
- 对于 从 到 ,如果第 号骑士存在一个 力量更大 的相邻骑士,且该相邻骑士的剑尖指向第 号骑士的方向,则将第 号骑士标记为 死亡。形式化地,若满足以下任一条件,则第 号骑士将被标记为死亡:
- 且 且
- 且 且
- 如果列表 中至少有一个骑士被标记为死亡,则返回步骤 2。
现在,你将收到 个询问,每个询问的形式如下:
- 给定整数 (),将 变为 。
在每次询问之后,请计算经过一场枪术对决后,仍存活的骑士数量。
注意,骑士不会在上一场对决中死亡后继续死亡(即每次对决都是独立的,初始状态均为所有骑士存活)。
输入格式
第一行包含两个以空格分隔的整数 和 ()—— 表示数组 的长度和询问的数量。
第二行包含 个以空格分隔的整数 ()。
第三行包含一个长度为 的二进制字符串 。
接下来 行,每行包含一个整数 (),表示将 变为 的询问。
输出格式
按顺序输出 行,每行一个整数 ,其中 表示在第 次询问之后,执行一场枪术对决后仍存活的骑士数量。
5 3
2 1 3 4 3
11011
1
3
4
2
4
2
10 5
10 1 2 3 8 9 4 5 7 6
0111100110
10
5
6
5
1
5
5
3
6
1
提示
注释
在第一个样例输入中,第一次询问后, 变为 01011。
初始时,存活骑士(的编号)为 。经过第一轮迭代后,剩余的骑士为 。经过第二轮迭代后,剩余的骑士为 。经过第三轮迭代后,没有新的骑士死亡,因此一场枪术对决后剩余 2 名骑士。
第二次询问后, 变为 01111。
经过第一轮迭代后,剩余的骑士为 。经过第二轮迭代后,没有新的骑士死亡,因此一场枪术对决后剩余 4 名骑士。
计分
子任务 1 ( 分):
子任务 2 ( 分): 对于 ,有
子任务 3 ( 分): 若 ,则 ,且保证每个询问的答案不超过
子任务 4 ( 分): 若 ,则
子任务 5 ( 分):
子任务 6 ( 分): 无额外限制
翻译由 DeepSeek 完成
京公网安备 11011102002149号