题目大意
现在有四种随从:
- 圣盾亡语
- 圣盾
- 亡语
- 白板
如果对方随从没有免疫,以上随从都能做到一击必杀。
词缀的效果如下:
- 圣盾:免疫一次伤害,免疫后圣盾消失。
- 亡语:死亡时召唤一只1/1的藤蔓。
每回合只能发动一次攻击,游戏结束时你还有随从存活就算你获胜。你很会玩,所以你一定能找到制胜策略,哪怕只有一点可能。
给你双方随从信息,请告诉我你能否获胜。
思路
贪心处理。
- 藤蔓没法拿来解场,只能破圣盾,因为每个随从的血量都是1e9。
- 没有藤蔓时只能硬解,为了亏得少一些,优先用有亡语的随从解。
- 上述条件都满足不了了,用圣盾亡语的随从。
#include <bits/stdc++.h>
using namespace std;
int t;
int a[5], b[5];
void battle()
{
if(b[3])
{
b[3]--;
b[5]++;
}
else
if(b[4]) b[4]--;
else
if(b[1])
{
b[1]--;
b[3]++;
}
else
{
b[2]--;
b[4]++;
}
}
int main()
{
cin >> t;
while(t--)
{
scanf("%d%d%d%d", &a[1], &a[2], &a[3], &a[4]);
scanf("%d%d%d%d", &b[1], &b[2], &b[3], &b[4]);
while(a[1]+a[2]+a[3]+a[4] && b[1]+b[2]+b[3]+b[4])
{
if(a[3]+a[4])
b[5] = 0;
if(a[5] && b[1]+b[2])
{
if(b[1])
{
b[1]--;
b[3]++;
}
else
{
b[2]--;
b[4]++;
}
a[5] = 0;
}
if(a[3])
{
a[3]--;
a[5]++;
}
else
if(a[1])
{
a[1]--;
a[3]++;
}
else
if(a[2])
{
a[2]--;
a[4]++;
}
else a[4]--;
battle();
}
if(b[1]+b[2]+b[3]+b[4] || !(a[1]+a[2]+a[3]+a[4]) && a[5]<=b[5]) puts("No");
else puts("Yes");
}
return 0;
}