zoukankan      html  css  js  c++  java
  • BNU4207:台风

    东方非想天则(TH12.3)是一款优秀的格斗游戏,其以华丽的弹幕,连贯的技能衔接及优美的音乐吸引了众多玩家(宅男更多-_-),而且各平台上也为其提供了联机的机会。

     

    好了,言归正传,天气系统是本游戏的一个特色,比如上面的台风天:双方的攻击不会被对方干扰(就是说,是你打你的我打我的地拼命直到一方倒下)直到台风结束。XsugarX和temperlsyer面对台风的时候都会毫不犹豫地选择互相拼命(按着自己的一套攻击套路比如XsugarX的1-》2-》3-》1...和temperlsyer的1-》2-》...-》5-》1这样循环攻击),下面给出他们所选的角色攻击数据(攻击需要时间和给对方造成的伤害),他们想知道谁最终剩余的体力多。

    请根据双方初始体力,及台风持续时间,最终输出剩余体力多的一方,及对应地剩余体力。


    Saigyougi Yoyoko——XsugarX

    1)+15 帧后攻击,650 点伤害,

    2)+19 帧后攻击,450 点伤害,

    3)+46 帧后攻击,1100 点伤害。

    Reimiria Scarlet——temperlsyer

    1)+9 帧后攻击,200 点伤害;

    2)+9 帧后攻击,200 点伤害;

    3)+10 帧后攻击,400 点伤害;

    4)+10 帧后攻击,500 点伤害;

    5)+45 帧后攻击,850 点伤害。


    最后有一点需要额外注意,由于被打的人多少会受到些阻挡,因此受到攻击时当前在做的动作会被延缓2帧。

    就是说,在第0帧时双方同时开始攻击动作,然而由于temperlsyer出手比较快,XsugarX先在9帧时先被攻击到,因此XsugarX受到伤害,同时他的第一次攻击会被推迟到17帧而不是第15帧。然后XsugarX在第17帧攻击到temperlsyer,此时他的第二次攻击被延缓2帧,如果某时刻两方同时攻击到对方,同时延缓下一次攻击2帧。

    下面这个例子描述了样例的攻击顺序。

    9帧   temperlsyer 攻击

    17帧XsugarX攻击

    20帧 temperlsyer攻击

    30帧 temperlsyer攻击

    40帧 XsugarX攻击

    Input

     第一行一个数Z,表示测试数据组数。

    以后每行三个数,分别表示台风持续时间t(t<=5000),XsugarX所选机体的体力P1,temperlsyer所选机体的体力P2。(体力0<P1,P2<=50000)

    Output

     获胜方(XsugarX或者temperlsyer)+空格+获胜方剩余体力(一方体力降低至0时或台风结束时即结束)。如果是平局(台风结束时双方体力相等,或者任一时刻双方同时击中对方使体力均小于等于0),请输出DRAW

    Sample Input

    15000 9450 9450

    Sample Output

    XsugarX 450
     
    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    
    int x[3][2] = {15,650,19,450,46,1100};
    int t[5][2] = {9,200,9,200,10,400,10,500,45,850};
    
    int main()
    {
        int T,n,xhp,thp,i,j;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d%d",&n,&xhp,&thp);
            int lx,lt,nx,nt;
            lx = lt = nx = nt = 0;
            for(i = 1; i<=n; i++)
            {
                nx%=3;
                nt%=5;
                if(i == lx+x[nx][0] && i == lt+t[nt][0])
                {
                    thp-=x[nx][1];
                    xhp-=t[nt][1];
                    lx=i+2;
                    lt=i+2;
                    nx++;
                    nt++;
                }
                else if(i == lx+x[nx][0])
                {
                    thp-=x[nx][1];
                    lt+=2;
                    lx = i;
                    nx++;
                }
                else if(i == lt+t[nt][0])
                {
                    xhp-=t[nt][1];
                    lx+=2;
                    lt= i;
                    nt++;
                }
                if(xhp<=0 || thp<=0)
                    break;
            }
            //printf("%d %d
    ",thp,xhp);
            if(xhp == thp || (xhp<=0 && thp<=0))
                printf("DRAW
    ");
            else if(thp>xhp)
                printf("temperlsyer %d
    ",thp);
            else
                printf("XsugarX %d
    ",xhp);
        }
    
        return 0;
    }
    
  • 相关阅读:
    动态数组arraylist的使用
    第一次
    layui.mobile.css
    index.html
    Ansible部署配置
    微服务项目配置文件
    镜像挂载
    网卡设置
    获取内存信息
    超时方法
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3363541.html
Copyright © 2011-2022 走看看