zoukankan      html  css  js  c++  java
  • 山东省第七届ACM竞赛 J题 Execution of Paladin (题意啊)

    题意:鱼人是炉石里的一支强大种族,在探险者协会里,圣骑士有了一张新牌,叫亡者归来,效果是召唤本轮游戏中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;
    }
    
  • 相关阅读:
    无题
    生活真像小说
    草样年华
    Intentional Programming
    厌倦说话
    解释 Intentional Programming
    开始折腾iphone cdma 恢复,降级,刷机,越狱,手编,写号
    新手如何成为更好的图形设计师
    Grunt.js 初使用
    有抱负的程序员应看的10个TED演讲
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5576135.html
Copyright © 2011-2022 走看看