2511 - LOL-诡术妖姬的秒人问题
英雄联盟里面有一个英雄叫做诡术妖姬-乐芙兰,她是一个可以秒杀敌人的法师,她的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;"> <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
提示
QRWEQE
造成的伤害为:200+160+200+400+160+300+200+300+200
二段E不会被R技能复制。
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); } }
提示
QRWEQE
造成的伤害为:200+160+200+400+160+300+200+300+200
二段E不会被R技能复制。