luogu#P6474. [NOI Online #2 入门组] 荆轲刺秦王

[NOI Online #2 入门组] 荆轲刺秦王

题目背景

本测试数据为脚造,欢迎提供 hack。

第 18 组数据卡了很多人,放于附件中供检查。

题目描述

时隔数年,刺客荆轲再次来到咸阳宫,试图刺杀嬴政。

咸阳宫的地图可以描述为一个 nnmm 列的矩形。在这里,我们规定每一行中从左到右为 xx 轴正方向,每一列中从下到上为 yy 轴正方向,左下角的点坐标为 (1,1)(1,1)。矩形中的点可以分为 44 种:

  1. 起点,也就是荆轲的所在点,在地图中用字符 S 代表。
  2. 终点,也就是嬴政的所在点,在地图中用字符 T 代表。
  3. 卫兵,在地图中用一个正整数 ai,ja_{i,j} 代表。在这里,一个卫兵 (i,j)(i,j) 可以观察到与他曼哈顿距离小于 ai,ja_{i,j} 的点。也就是卫兵 (i,j)(i,j) 可以观察到所有满足 xi+yj<ai,j|x-i|+|y-j|<a_{i,j} 的点 (x,y)(x,y)
  4. 空地,在地图中用字符 . 代表。

荆轲的正常移动方式为每秒向八连通的任意方向前进一格。如下图,中间的点为荆轲当前所在点,每一秒,他可以走向其余的八个点。

img

需要注意的是,正常移动时,荆轲不能踏进任何一个有卫兵或者卫兵能观察到的格子。当然,他也不能走出咸阳宫,也就是说,无论何时,荆轲的坐标 (x,y)(x,y) 都必须满足 1xm1\le x\le m1yn1\le y\le n

荆轲还有两种技能:隐身和瞬移。

  1. 隐身:下一秒荆轲进入隐身状态,卫兵观察不到荆轲,荆轲可以进入卫兵的观察范围内,但仍然不能进入卫兵所在的格子。注意这个状态只能维持一秒。
  2. 瞬移:荆轲下一秒移动的距离改为 dd,但这时只能向上下左右四个方向移动。即可以移动到 (x+d,y)(x+d,y)(xd,y)(x-d,y)(x,y+d)(x,y+d)(x,yd)(x,y-d)。 在本题中,两种技能可以同时使用,而且不考虑冷却时间,即一次用完可以立即用下一次,两种技能都分别有使用次数限制,你也可以不用完所有次数。

现在给出咸阳城的地图,请计算荆轲到达秦王所在点所需的最短时间。此外,在所用时间相同情况下,荆轲希望使用的两种技能总次数尽可能少;在所用时间与技能次数相同情况下,荆轲希望使用的隐身次数尽可能少。

输入格式

第一行五个整数 nn, mm, c1c_1, c2c_2, dd,代表地图的大小为 n×mn\times m,隐身的使用限制次数为 c1c_1,瞬移的使用限制次数为 c2c_2 和一次瞬移的距离为 dd

接下来 nn 行,每行 mm 个元素。每个元素为字符 ST. 或者一个正整数 ai,ja_{i,j},代表一个格点,具体含义详见题目描述。

输出格式

若荆轲无法到达秦王所在点,则输出一行一个 1-1

否则输出一行三个整数 tt, u1u_1, u2u_2,依次代表所需的最短时间,隐身的使用次数与瞬移的使用次数。

5 4 0 0 5
. 1 T 1
. . . 2
. 1 . .
S . . .
1 . . .
3 0 0
8 6 2 3 3
. S . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
2 . 2 . 2 .
. . 1 . T .
3 . 1 . . 3

3 1 3
8 6 5 5 2
. S . . . .
. . . . . .
. . . . . .
1 1 3 2 . 1
2 3 2 2 1 3 
3 2 4 1 4 3 
2 6 1 5 T 2 
8 1 6 3 2 10
-1

提示

样例 1 解释

起点为 (1,2)(1,2),荆轲可以依次走到 (1,3)(1,3), (2,4)(2,4), (3,5)(3,5) 到达终点。

样例 2 解释

起点为 (2,8)(2,8),荆轲可以依次走到 (2,5)(2,5), (2,2)(2,2), (5,2)(5,2),需要注意的是,即使最后一步到达终点,但因为终点在卫兵的观察范围之内,所以仍然需要隐身进入。

数据范围与提示

对于测试点 161\sim 6nn, m10m\le 10c1=c2=0c_1=c_2=0,保证所需的最短时间不超过 55 或者无解。

对于测试点 7107\sim 10nn, m20m\le 20c1=c2=0c_1=c_2=0,保证 T 的位置不在任何一个卫兵的观察范围之中。

对于测试点 111211\sim 12nn, m20m\le 20c1=0c_1=0

对于测试点 131413\sim 14nn, m20m\le 20c1c_1, c25c_2 \le 5

对于测试点 151615\sim 16:卫兵个数不超过 350350

对于所有测试点:2n2\le n, m350m\le 3501ai,j3501\le a_{i,j}\le 3500c10\le c_1, c215c_2\le 151d3501\le d\le 350

保证 S 的位置不在任何卫兵的观察范围中。