#ZC2M. arkdaytime

arkdaytime

题目描述

一天,阿伟在玩arkdaytime。

这个游戏的基本机制就是拿自己的干员依次部署后解决依次出现的敌人。由于阿伟有点懒,只会摆完挂机,并在游戏开始一瞬间摆下自己所有的干员。

阿伟想提前知道自己是否能够通过这一关。

于是阿伟告诉聪明的小胡这个游戏的基本规则:

  1. 干员拥有血量,攻击力,防御力,魔抗,攻击的伤害类型(1 代表物理攻击,2 代表魔法攻击),所处的位置(1 代表地面,2 代表高台)
  2. 敌人拥有血量,攻击力,防御力,魔抗,攻击的伤害类型(1 代表物理攻击,2 代表魔法攻击),攻击偏好(1 代表地面,2 代表高台)和 一次攻击所能攻击的干员数量。
  3. 物理伤害的计算:造成的伤害=攻击力防御力造成的伤害 = 攻击力 - 防御力
  4. 魔法伤害的计算:造成的伤害=攻击力(100魔抗)/100造成的伤害 = \lceil攻击力 * (100 - 魔抗) / 100 \rceil
  5. 当还存在敌人的时候,地面上没有存在干员时记为失败,反之当敌人全部被消灭时记为胜利。
  6. 敌人的速度无限快,射程无限远,但只会在地面进行移动,优先冲向最后部署的地面干员,直到地面不存在干员。
  7. 敌人会根据自己的攻击偏好优先对最后部署的干员进行攻击。 比如敌人的攻击偏好是 1 就会优先攻击在地面上的干员,若地面上的干员数量小于敌人一次攻击所能攻击的干员数量,敌人会将多余的攻击次数攻击高台上的干员。
  8. 由于敌人的速度足够快,每一轮行动总是敌人先动。
  9. 在敌人攻击完之后,所有干员开始还手,所有干员都行动过一次后,敌人才会开始下一轮的进攻。
  10. 当干员的 hphp 达到 00 时,直接退场,敌人的 hphp 达到 00 时,才会出现下一个敌人。
  11. 地面的干员会阻挡敌人且只有在自己阻挡敌人的时候才可以攻击敌人。其他地面干员无法攻击被别人阻挡的敌人。

输入格式

第一行是两个整数 n,mn,m (nn 是这一关依次到来的敌人的数量,mm 是阿伟依次摆下的干员的数量)。

接下来的 nn 行每行 77 个整数 ,代表敌人的血量,攻击力,防御力,魔抗,攻击的伤害类型,攻击偏好(1 代表地面,2 代表高台)和一次攻击所能攻击的干员数量。

接下来的 mm 行每行 66 个整数,代表干员的血量,攻击力,防御力,魔抗,攻击的伤害类型,所处的位置(1 代表地面,2 代表高台)。

数据保证一定有解。

输出格式

第一行,若阿伟胜利了输出 Yes 反之输出 No。 第二行,输出游戏结束时剩余的敌人的数量或剩余干员的数量。

5 5
100 6000 500 2 1 2 3
1000 300 500 2 1 2 3
1000 300 510 3 1 1 1
1000 300 520 11 2 2 2
1000 300 600 10 2 1 1
2000 499 300 2 1 1
1000 600 200 50 2 1
1000 600 200 50 2 1
1000 600 200 50 2 2
1000 600 200 50 2 2
No
1

解释 #1

第一个敌人一开始被第三个干员阻挡,然后开始攻击。由于敌人的攻击个数为三个且敌人的攻击偏好是 2 敌人同时对第 3,4,53,4,5 的干员造成伤害。

3,4,53,4,5 干员收到伤害由于血量为 00 直接退场 (此时最后部署的干员就为第二个干员)。

然后敌人受到阻挡他的干员的攻击,受到二号干员的攻击,敌人阵亡。

第二个敌人出场,被第二个干员阻挡,然后开始攻击。敌人的攻击偏好是 2 ,但是我方没有位于 2 的干员了,于是敌人根据部署的顺序,同时对第 1,21,2 的干员造成伤害。

敌人受到阻挡他的干员的攻击,如此两轮受到二号干员的攻击,敌人阵亡。

...

最后一个敌人出现后只剩下二号干员,但是二号干员是物理伤害他的攻击力小于敌人的防御力,无法对敌人造成伤害,最终被敌人干掉。

由于没有地面干员阻挡敌人,游戏失败输出 No1