题目
有情报称H市有恐怖分子要发动一场恐怖袭击。现在已知恐怖分子的坐标是(sx,sy),他将要发动袭击的位置是(tx,ty)。现在有n名特警,他们的位置分别是(x1,y1),(x2,y2),…,(xn,yn)。在每个单位时间内,恐怖分子和每个特警可以选择朝上下左右移动1的距离或者原地不动。因为特警完全掌握了恐怖分子的情报,每个特警可以根据恐怖分子在这个单位时间内的移动来决定自己这个单位时间内如何移动。如果在某个时刻恐怖分子和某个特警处在同一个坐标,那么恐怖分子就会被这个特警抓住。恐怖分子的目标是先到达坐标(tx,ty),之后再想办法永远不会被特警抓住。你的任务是计算要用前多少名特警才能让恐怖分子不能达成他的目的,即输出最小的i使得只要我们有前i个分别在(x1,y1),(x2,y2),..,(xi,yi)的特警,那么恐怖分子就无法在到达(tx,ty)之后还不会被特警抓住。如果n名特警都在的情况下,恐怖分子依然能达成他的目标,那么输出n+1。
解题思路
为什么比赛的时候会不会做?
当时真正静下来想这题的时候已经9点多了,所以随便打了个50分。
以后不能在比赛开始后吃面包了,不然真的会影响状态。
有显然的结论:
坏人只会往一个方向不停地走。
根据这个,只需要有警察能够封锁4个方向即可。
本题的难点:坏人要从
(sx,sy)
(
s
x
,
s
y
)
走到
(tx,ty)
(
t
x
,
t
y
)
,然后再进行逃脱。
以
(tx,ty)
(
t
x
,
t
y
)
为原点建立平面直角坐标系,作直线
y=x
y
=
x
和
y=−x
y
=
−
x
,整个平面被分割成4块,每一块代表若有警察在此块中(含边界),则坏人不能够往此方向逃跑。
坏人初始坐标为
(sx,sy)
(
s
x
,
s
y
)
?
这相当于给警察有
|sx−tx|+|sy−ty|
|
s
x
−
t
x
|
+
|
s
y
−
t
y
|
的时间准备站位。
所以如果警察能够在
|sx−tx|+|sy−ty|
|
s
x
−
t
x
|
+
|
s
y
−
t
y
|
的时间内走道
y=x
y
=
x
或
y=−x
y
=
−
x
,那么他可以控制两个方向。