题目大意
现在有四种随从:
- 圣盾亡语
- 圣盾
- 亡语
- 白板
如果对方随从没有免疫,以上随从都能做到一击必杀。
词缀的效果如下:
- 圣盾:免疫一次伤害,免疫后圣盾消失。
- 亡语:死亡时召唤一只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; }
评论
还没有任何评论,你来说两句吧!