2021 软件学院 AK 杯程序设计竞赛 (网络赛)

Problem J. 天空即为极限

Some birds are not meant to be caged, their feathers are just too bright. jl 很向往空中的飞鸟,于是,sz 找到了鞘翅送给 jl ,让他能够在高空翱翔。

假设天空是一个宽高无限的二维欧几里得平面,y 轴方向从左往右递增,z 轴方向从下往上递增, jl 当前的飞行方向有八个(左上、左、左下、下、右下、右、右上、上)。每秒初会朝着当前方向移动 1 次。方向为上、下、左、右其一时,移动的直线位移是 1 格;否则,移动的直线位移是 \sqrt{1+1}=\sqrt2 格。如图所示:

不幸的是,jl 飞行时正处于夜晚。天空中随机生成了若干敌对生物幻翼。定义平面两点 (y_1,z_1),(y_2,z_2)距离|y_1-y_2|+|z_1-z_2| 。若幻翼当前与 jl 的距离小于等于 64 格,那么在 jl 移动后瞬间,幻翼会在上述八方向中选择一个方向移动,使得移动后在所有的选择里与 jl 的距离最小,可通俗理解为朝着 jl 的坐标跟踪移动。移动位移大小同上。特别地,如果此时幻翼恰好与 jl 在同一格,幻翼不会移动。

  • jl 的初始生命值为 20,攻击力恒为 7。 幻翼的初始生命值为 20,攻击力恒为 3
  • jl 可能随时改变飞行方向。若 jl 在某一秒初更改飞行方向,那么从这一秒初开始(包括这一秒), jl 移动方向会发生变化。
  • 方向确定后 jl 和幻翼相继移动(两者的移动方向未必相同),若 jl 与 任意一只幻翼处于同一格,他们会相互攻击一次,攻击伤害值为攻击方的攻击力大小,且不会超过被攻击方的当前生命值,双方生命值的减少量等同于对方的攻击伤害值。
  • 假设 jl 与多只幻翼处在同一格,因为鞘翅的玄妙,这一秒内 jl 只受到一次攻击,而多只幻翼将各受到一次 jl 的攻击。这秒的所有攻击结束后,将自动进入下一秒。值得注意的是,幻翼受到攻击之后的 1 秒钟不会移动,而 jl 受到攻击后下一秒仍会继续飞行。
  • 若任一方的生命值不为正数,则视为死亡。幻翼死亡后不会继续攻击、移动;若 jl 死亡则会失去宝贵的鞘翅。

约定左上、左、左下、下、右下、右、右上、上 八个方向分别记作 1,2,3,4,5,6,7,8

记初始时间为第 1 秒初,jl 会飞行 t 秒,在第 t 秒末时,如果 jl 仍存活,他会让 sz 马上用指令将他传送回家,并获得一张一鸣的女装照作为奖励。

输入

输入包含多组测试用例。

第一行包含一个整数 T \ (1 \leq T \leq 10),表示你需要处理 T 组测试用例。

对于每个测试,首先输入一行一个五个整数 t(1\le t\le10^3),p(0\le p\le t-1),d_0(1\le d_0\le 8)y_0,z_0(-10^5\le y_0,z_0\le10^5)t 代表 jl 飞行的总时长,p 代表 jl 调整飞行方向的次数, d_0 代表 jl 的初始飞行方向。y_0,z_0 代表 jl 的初始坐标。

接下来输入 p 行,每行两个整数 m, d(2\le m\le t, 1\le d\le8),代表 jl 在第 m 秒初移动前更改的飞行方向为 d。保证 m 严格单调递增。

接下来输入一行一个整数 n(1\le n\le10^3),代表幻翼的个数。

接下来输入 n 行,每行两个整数 y,z(-10^5\le y,z\le10^5),代表一个幻翼的初始坐标。

输出

对于每个测试,如果 jl 没能活过 t 秒,在一行内输出lose,并输出一个整数 t' 代表 jl 死亡时的秒数。若 jl 活过了 t 秒,在一行内输出survive,并输出一个整数 a 代表 jl 对幻翼造成的总伤害数值。

样例

标准输入 复制文本
4
6 2 2 0 0
4 6
6 2
1
-1 0
1000 4 6 0 0
6 8
7 4
8 5
9 3
4
1 0
4 0
7 0
10 0
9 4 6 0 0
6 8
7 4
8 5
9 2
4
1 0
4 0
7 0
10 0
95 0 6 -64 0
1
64 0
标准输出 复制文本
survive 20
survive 56
lose 9
survive 0

提示

对第一个测试,在第 1 秒,jl 与幻翼战斗;在第 4 秒, jl 与幻翼战斗;在第 6 秒, jl 与幻翼战斗。前两次战斗造成 7 点伤害,但最后一次战斗时幻翼只有 6 点生命值,所以只造成了 6 点伤害。所以总伤害为 20

对第二个测试,在第 1 秒, jl 与第一只幻翼战斗;在第 2 秒, jl 与第二只幻翼战斗;在第 4 秒, jl 与第三只幻翼战斗;在第 5 秒, jl 与第四只幻翼战斗;在第 6 秒,jl 同时与前三只幻翼战斗;在第 7 秒, jl 与第四只幻翼战斗,之后再无战斗。有 6 秒发生过战斗,jl 一共扣除 18 点血,一共攻击 8 次,且伤害均为 7,所以总伤害为 56

对第三个测试,前 8 秒与第二个测试完全相同,在第 9 秒,jl 同时与四只幻翼战斗并死亡。

对第四个测试,前 63 秒幻翼与 jl 距离大于 64,幻翼不移动。从第 64 秒开始幻翼朝 jl 方向移动。在第 95 秒, jl 和幻翼坐标分别是 (31,0),(33,0)。自始至终他们未相遇,故总伤害为 0

登录以提交代码。
单点时限 2 秒
内存限制 256 MB
提交 40
通过 9

A B C D E F G H I J

J 题测试用例数量不超过 10,现已更新题面,请刷新网页查看。
I题重测已经完成,为你带来不便我们深表歉意
I题数据有误,请暂时不要提交,稍后将会进行重测
B 题输出要求有修改:你的答案被认为是正确的当且仅当你的答案与标准答案的相对误差或绝对误差不超过 0.01,题面已经更新,我们正在重判所有相关代码,期间判题可能受到影响,我们深表歉意。
I题提示有误,现在已更新题面,请刷新网页查看
评测环境一秒只可以做约 100000000 次运算,请充分优化你的代码避免运行超时。