题意:鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中7个已死鱼人。如果死掉的不足7个,那么召唤的数量就会不足7。
鱼人有很多,下面的4个是:
寒光智者:3费,2攻,2血,战吼:双方玩家各抽2张牌。
鱼人领军:3费,3攻,3血,其他鱼人获得+2/+1。
蓝腮战士:2费,2攻,3血,冲锋。
老瞎眼:4费,2攻,3血,冲锋。战场上每有1个其他鱼人就会使其获得+1攻击。
下面给一些说明:
法力:召唤随从的消耗。技能效果召唤的随从不消耗额外法力,只会消耗卡牌本身法力,双方玩家最多有10点法力。
攻击:随从每次能造成的伤害。
战吼:拥有战吼效果的随从,在从手牌里打出时会触发这个效果。被技能召唤的随从不会触发战吼。
冲锋:本来,在召唤出来的这一轮,随从是无法攻击的,但是有冲锋就可以。在召唤回合可以直接攻击。
战场:战场(游戏盘),游戏各种内容发生的地方,每场游戏都发生在棋盘上。
+2/+1:+2攻击和+1血量。
现在,轮到你出牌了,你有10点法力,只剩一张亡者归来。战场上没有任何随从,意味着你的随从可以直接攻击对手英雄。你还记得你出过的鱼人,也知道对手英雄的血量,那你能够用手上唯一这张牌赢得胜利吗?
输入
多种测试方案,第1行包括 integer 7 (7<=22000);表示测试数量。
每个测试的第1行都包括2个integer,n(已死的鱼人,0<=n<=7),h(英雄血量,0
后续N行里,每行都包括string,表示已死鱼人名称,String只能为:“寒光智者”,“鱼人领军”,“蓝腮战士”,“老瞎眼”。
输出
列出所有方案后,如果能赢得游戏,那就输出"乌拉啦啦啦呱啦蛤蛤!"(没有引号),否则输出“跟你说个笑话:圣骑士的斩杀”。使用随从攻击敌人英雄,使其血量少于等于0即可胜利。
示例
输入 | 输出 |
3 3 1 寒光智者 寒光智者 鱼人领军 3 8 老瞎眼 老瞎眼 寒光智者 7 30 老瞎眼 蓝鳃战士 蓝鳃战士 鱼人领军 鱼人领军 寒光智者 寒光智者 |
讲个笑话:圣骑的斩杀 乌拉拉拉拉呱呱 讲个笑话:圣骑的斩杀 |
提示
第1个方案里,鱼人都无法攻击。
第2个方案里,每个老瞎眼都有+2攻击,因为另外的一个老瞎眼和寒光智者,因此总伤害为8。
最后一个方案里,老瞎眼有12攻击(2点基础攻击,6个其他随从;2个鱼人领军,2个蓝腮战士有6攻(2基础攻击,2个鱼人领军)因此总伤害是24)。
析:毛线啊,这个题,是什么啊,是炉石游戏的,如果没有玩的小伙伴可就惨了,因为这个题意特别不好理解,关键是要抠字眼。
主要是在这个冲锋,也就是说如果没有冲锋的鱼人,是无法攻击的,也就是说只有老瞎眼主蓝鳃战士是可以攻击的,别的都只能是提供技能而已,
寒光智者也没有技能,就只能充人数,不对应该是鱼数,因为对老瞎眼来说,对于其他每个鱼都能加一个攻击力,然后鱼人领军能给别鱼加2攻击力。
所以答案也就出来了,首先是老瞎眼和蓝鳃战士的攻击力+(n-1)*老瞎眼的个数,这是它的技能,再加上鱼人领军对老瞎眼和蓝鳃战士。
代码如下:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int maxn = 100; char s[maxn]; int main(){ int T, n, m; cin >> T; while(T--){ scanf("%d %d", &n,&m); getchar(); int o = 0, b = 0, w = 0; for(int i = 0; i < n; ++i){ gets(s); if(‘B‘ == s[0]) ++b; else if(‘M‘ == s[0]) ++w; else if(‘O‘ == s[0]) ++o; } int ans = (n-1) * o + 2 * (b+o) + 2*w * (o+b); if(ans >= m) puts("Mrghllghghllghg!"); else puts("Tell you a joke, the execution of Paladin."); } return 0; }