zoukankan      html  css  js  c++  java
  • 阴云密布

    题目描述

    你有三个属性:生命值,魔法值,能量值。你有如下三种基本技能:充能,攻击,魔法。你的初始生命值为W_1W1,能量值和魔法值为00。敌人的初始生命值为W_2W2

    战斗有nn轮,每轮你会发动3个基本技能。

    攻击Blast: 对于第ii个基本技能,如果它是攻击,设能量值xx,那么伤害为(x+1)cdot A_i(x+1)Ai。然后能量值清0。

    充能Charge: 对于第ii个基本技能,如果它是充能,那么伤害为B_iBi。然后能量值增加1。

    魔法Accele: 对于第ii个基本技能,如果它是魔法,设能量值xx,那么伤害为lfloorfrac{x+2}{2} floorcdot C_i2x+2Ci,魔法值增加lfloorsqrt{x+1} floorcdot Cx+1C。然后能量值清0。

    组合技能Combo: 如果这3个技能都是充能,那么能量值额外增加D_1D1。如果这3个技能都是魔法,那么魔法值额外增加D_2D2。如果这3个技能都是攻击,那么造成的伤害额外增加D_3D3

    放大招Magia: 如果魔法值达到E_1E1,那么你会先放大招再执行本轮的三个基本技能。放大招会让生命值增加E_2E2,对敌人造成伤害E_3E3。放完大招后魔法值为E_4E4。当然,E_4<E_1E4<E1

    Buff状态: 放完大招后的一轮中,所有技能造成的伤害翻倍(包括额外增加的伤害),受到敌人伤害减半(向下取整)。Buff状态只持续一轮。

    每轮若敌人不死,敌人会对你造成X_1X1伤害。此时你的魔法值会增加X_2X2

    如果你的生命值降至0或负数,战斗立即结束并输出Lose

    如果敌人的生命值降至0或负数,战斗立即结束并输出Win

    如果n轮结束后你和敌人都没死,那么输出Error

    输入格式

    第一行输入n,W_1,W_2n,W1,W2

    第二行输入A_1,A_2,A_3,B_1,B_2,B_3,C_1,C_2,C_3,CA1,A2,A3,B1,B2,B3,C1,C2,C3,C。

    第三行输入D_1,D_2,D_3,E_1,E_2,E_3,E_4D1,D2,D3,E1,E2,E3,E4

    第四行输入X_1,X_2X1,X2

    接下来nn行输入每一轮的3个技能,每行三个字母,B表示攻击,C表示充能,A表示魔法。

    输出格式

    输出一行字符串。字符串应是LoseWinError中的一个。

    输入输出样例

    输入 #1
    4 27922 140000
    7000 8000 10000 4000 5000 6000 2000 3000 4000 7
    2 20 3000 100 0 200000 40
    8000 5
    ACB
    ACB
    ACB
    ACB
    输出 #1
    Lose
    输入 #2
    3 27922 140000
    7000 8000 10000 4000 5000 6000 2000 3000 4000 9
    2 20 3000 100 0 200000 40
    8000 5
    AAA
    AAA
    AAA
    输出 #2
    Win
    输入 #3
    3 27922 140000
    7000 8000 10000 4000 5000 6000 2000 3000 4000 7
    2 20 3000 100 0 200000 40
    8000 5
    CBA
    CAB
    CCB
    输出 #3
    Error

    说明/提示

    样例1中各时刻状态:

    第1轮后,生命值为19922,魔法值为12,能量值为0,敌人生命值为113000

    第2轮后,生命值为11922,魔法值为24,能量值为0,敌人生命值为86000

    第3轮后,生命值为3922,魔法值为36,能量值为0,敌人生命值为59000

    第4轮后,生命值为-4078,魔法值为48,能量值为0,敌人生命值为32000

    第一轮的伤害构成为:2000+5000+10000*2=27000

    对于30%的数据,n=1n=1

    对于60%的数据,一定不会发大招

    对于100%的数据,nleq 10^3,W_1,W_2in[1,10^9],A_i,B_i,C_i,D_3,X_1,E_2,E_3in[250,10^5],C,D_2,E_1,E_4,X_2in[0,10^4],D_1in[1,5]n103,W1,W2[1,109],Ai,Bi,Ci,D3,X1,E2,E3[250,105],C,D2,E1,E4,X2[0,104],D1[1,5]

     1 #include<iostream>
     2 #include<cmath>
     3 using namespace std;
     4 int main(){
     5     int n,w[3],a[4],b[4],c[5],d[4],e[5],x[3],m1=0,m2=0,buff=0;
     6     char s[10];
     7     cin>>n>>w[1]>>w[2];
     8     cin>>a[1]>>a[2]>>a[3]>>b[1]>>b[2]>>b[3]>>c[1]>>c[2]>>c[3]>>c[4];
     9     cin>>d[1]>>d[2]>>d[3]>>e[1]>>e[2]>>e[3]>>e[4];
    10     cin>>x[1]>>x[2];
    11     for(int i=1;i<=n;i++){
    12         cin>>s;
    13         a[0]=0; b[0]=0; c[0]=0;
    14         if(m2>=e[1]){
    15             w[1]+=e[2];
    16             w[2]-=e[3];
    17             m2=e[4];
    18             buff=1;
    19         }
    20         for(int j=0;j<3;j++){
    21             if(s[j]=='B'){
    22                 w[2]-=(m1+1)*a[j+1];
    23                 if(buff==1) w[2]-=(m1+1)*a[j+1];
    24                 m1=0; b[0]++;
    25             }
    26             else if(s[j]=='C'){
    27                 w[2]-=b[j+1];
    28                 if(buff==1) w[2]-=b[j+1];
    29                 m1++; c[0]++;
    30             }
    31             else if(s[j]=='A'){
    32                 w[2]-=(m1+2)/2*c[j+1];
    33                 if(buff==1) w[2]-=(m1+2)/2*c[j+1];
    34                 m2+=sqrt(m1+1)*c[4];
    35                 m1=0; a[0]++;
    36             }
    37         }
    38         if(a[0]==3) m2+=d[2];
    39         else if(b[0]==3) w[2]-=d[3];
    40         else if(c[0]==3) m1+=d[1];
    41         if(buff==1&&b[0]==3) w[2]-=d[3];
    42         if(w[2]<=0){
    43             cout<<"Win";
    44             return 0;
    45         }
    46         if(buff==1) w[1]-=x[1]/2;
    47         else w[1]-=x[1];
    48         if(w[1]<=0){
    49             cout<<"Lose";
    50             return 0;
    51         }
    52         m2+=x[2];
    53         buff=0;
    54     }
    55     cout<<"Error";
    56     return 0;
    57 }

    一道虽然不难,

    但是卡了我很久的题,

    主要是因为手残,

    前面用了c[0]作为题目中的C,

    后来还用c[0]计数,

    失策啊。

    qwq

  • 相关阅读:
    认证和授权学习2:springboot中快速使用spring security
    认证和授权学习1基于session的认证授权流程
    activiti学习11历史表和历史查询
    activiti学习10任务监听器的使用
    Vue源码阅读之VNode虚拟DOM(二)
    Vue源码阅读之Vue构造函数(一)
    useEffect使用指南
    从零搭建React+TypeScript的后台项目(三)
    从零搭建React+TypeScript的后台项目(二)
    从零搭建React+TypeScript的后台项目(一)
  • 原文地址:https://www.cnblogs.com/sxy2004/p/12270828.html
Copyright © 2011-2022 走看看