Execution of Paladin(山东省第七届acm j题)
省赛的时候,由于我是个英语渣,题意完全看不懂,也没玩过这个游戏,队友在那里抱着字典翻译了一个多小时,愣是没有翻译出来,最后也没有做出来,有点遗憾,但也没有办法。
回来以后还是没有看懂,就上网看看别人说的,慢慢的懂了。(不得不说太坑)
其实4种卡片,有两个能攻击的,其他两个不能直接攻击,只能凑人数和为那两个能直接攻击的加攻击力。
Coldlight Oracle: 3 MANA, 2 ATTACK, 2 HP. Battlecry: Each player draws 2 cards.
这个就是凑人数,不能直接攻击,战吼:每个玩家抽两张牌(并没有什么卵用)
Murloc Warleader: 3 MANA, 3 ATTACK, 3 HP. ALL other Murlocs have +2/+1.
这个是第一是凑人数,第二是为能直接攻击的加2攻击力和1血 伤害1 = 个数m*(o+b)*2
Bluegill Warrior: 2 MANA, 2 ATTACK, 3 HP. Charge.
这个可以直接攻击,造成2伤害 伤害2 = 个数b*2
Old Murk-Eye: 4 MANA, 2 ATTACK, 3 HP. Charge. Has +1 Attack for each other Murloc on the Battlefield.
这个也可以直接攻击,攻击力为初始的2和多一个人就可以多1攻击 伤害3 = 个数o*2+o*(n-1)
总伤害 = 伤害1 + 伤害2 + 伤害3
</pre> <pre name="code" class="cpp">#include <stdio.h>
#include <string.h>
int main()
{
char k[20];
int t,i,n,h;
scanf("%d",&t);
while(t--)
{
int sum;
scanf("%d%d",&n,&h);
getchar();
int o=0,b=0,m=0;
for(i=0;i<n;i++)
{
gets(k);
if(strcmp(k,"Old Murk-Eye")==0)
{
o++;
}
if(strcmp(k,"Murloc Warleader")==0)
{
m++;
}
if(strcmp(k,"Bluegill Warrior")==0)
{
b++;
}
}
sum=o*2+(n-1)*o+b*2+(b+o)*2*m;
if(sum>=h)
{
printf("Mrghllghghllghg!\n");
}
else
{
printf("Tell you a joke, the execution of Paladin.\n");
}
}
return 0;
}
题目链接:点击打开链接