遍历每一个会造成伤害的拳头(x≤n,y≤m)(x ≤ n, y ≤ m)(x≤n,y≤m),差分标记其所有伤害到的范围,最后对每一行求一下前缀和,其中有数字的是被损伤的部分。 对于某一拳(x,y)(x, y)(x,y),损伤半径rrr,我们可以遍历他所能覆盖到的所有行,即max(1,x−r)max(1, x - r)max(1,x−r)到min(n,x+r)min(n, x + r)min(n,x+r),对这行所能伤害到范围的左边界到右边界+1的差分数组标记(这里可以用勾股定理求出,已知一直角边 lll 和斜边 rrr ),处理完所有有效拳后求每一行的前缀和即可。 (注意处理边界问题,数组下标不要取越界了)
注册一个 南阳理工学院OJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 南阳理工学院OJ 通用账户