2511 - LOL-诡术妖姬的秒人问题

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

      英雄联盟里面有一个英雄叫做诡术妖姬-乐芙兰,她是一个可以秒杀敌人的法师,她的Q技能是一个可以造成伤害并且标记敌方单位的技能,如果一个目标在被标记的时候,被妖姬的其他技能打到了,则造成与Q技能伤害相等的额外伤害,W技能可以对敌方造成伤害,E技能可以在造成伤害的同时控制敌人,一段时间后,被控制的敌人会再次收到等量伤害,R技能可以模仿之前放过的技能,但是伤害会变成原来的80%。
接下来我想让你们算算,忽略敌人的防御,假设下面的技能按顺序打到了敌人身上,会造成多少伤害。

      设Q技能200伤害(不含标记),W技能400伤害,E技能300伤害(第一段伤害),数据会按照技能顺序给出,值得注意的是:由于E技能的2次伤害之间有延迟,我们允许在这段时间放技能,E技能的二段伤害也可以造成Q技能标记的生效,E技能二段的标记也是E,即数据中出现的E都是成对出现的(包括复制来的R)。

 

<strong><span style="color:#003399;font-size:14px;">&nbsp; &nbsp; &nbsp; <span style="color:#E53333;">本题有提示,请点击下方的提示[+]看提示。</span></span></strong> 

题目输入

多组数据。

<strong><span style="font-size:14px;color:#003399;">每组数据由若干个QWER组成。(技能数不超过50个)</span></strong> 

<strong><span style="font-size:14px;color:#003399;">R不会在开头,不会连续出现(除非是复制E后的二段R)。</span></strong> 

题目输出

输出一行结果表示这套技能造成的伤害。(结果不会超过int)

输入/输出样例

输入格式

QRWEQE
Q

输出格式

2120
200

C++解答

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cstring>
#include <malloc.h>
using namespace std;
int main()
{
    char a[30]={0};
    while(gets(a))
    {
        int i=0,tmp=0,flag=0,s=0,rtmp=0,f=0;
        while(a[i]!=0)
        {
            if(tmp=='Q' && f==1) s+=200,f=0;
            if(rtmp=='Q') s+=160,rtmp=0;
            if(a[i]=='Q') s+=200,tmp='Q',f=1;
            if(a[i]=='W') s+=400,tmp='W';
            if(a[i]=='E')
            {
                if(flag==0) s+=300,flag=1,tmp='E';
                else s+=300,flag=0;
            }
            if(a[i]=='R')
            {
                if(rtmp=='E') {s+=240,rtmp=0,i++;continue;}
                if(tmp=='Q') s+=160,rtmp='Q',tmp='R';
                if(tmp=='W') s+=320,rtmp='W',tmp='R';
                if(tmp=='E') s+=240,rtmp='E',tmp='R';
            }
            i++;
        }
        printf("%d\n",s);
        memset(a,0,30);
    }
}