题目大意
题目大意
给定一个 的方阵 ,其外围被一圈值为 的元素包围,共同形成一个 的方阵。
每个元素代表一个人的识别码。对于给定的通行证 ,如果一个人的识别码 满足 按位或 (即 的二进制表示中存在 没有的 ),则该人被视为“坏蛋”。(由于外围一圈元素的值极大,它们一定会满足该条件被判定为坏蛋)。
每个人(包含坏蛋自身)的安全感定义为:从当前位置出发,沿上下左右四个直线方向寻找,距离其最近的坏蛋的距离。如果自身是坏蛋,则距离为 。
现在有 次询问,每次给定一个 ,求方阵 中所有人的安全感之和。
数据范围
样例输入
1 | 1 |
样例输出
1 | 12 |
样例解释
在样例中,,。
由于坏蛋的条件是 按位或 ,因此识别码为 的是好人(用 G 表示),识别码为 的是坏蛋(用 B 表示)。外围一圈全部是极大值,均为 B。方阵的状态如下:
1 | B B B B B B B |
我们可以计算每个好人位置上,在上下左右四个直线方向中,遇到最近的坏蛋的距离:
-
对于 的
G,向上一步即为外围的B,距离为 。 -
对于 的
G,向左一步为内部的B,距离为 。 -
对于第三行的四个
G(除了中心 ):- 向上一步为
B,距离为 。 - 向上一步为
B,距离为 。 - 向上一步为
B,距离为 。 - 向上一步为
B,距离为 。
- 向上一步为
-
对于中心的 ,它的上下左右连续两个位置都是
G,直到第三个位置才是外围或内部的B,因此最近距离为 。 -
对于 的
G,向左一步为内部的B,距离为 。 -
对于第五行的两个
G:- 向右一步为内部的
B,距离为 。 - 向左一步为内部的
B,距离为 。
- 向右一步为内部的
将所有好人的距离相加:。坏蛋自身的最近距离为 ,因此安全感总和为 ,与样例输出一致。
思路讲解
AI 生成的 latex 题解代码
No content to show
AC代码
源代码
1 |