zoukankan      html  css  js  c++  java
  • 洛谷—— P1785 漂亮的绝杀

    https://www.luogu.org/problem/show?pid=1785

    题目背景

    话说absi2011的企鹅在和斗神塔第60层的Boss战斗

    不好,这局要输了,企鹅还剩4血了Boss还有392呢,哇,漂亮——红缨枪连击,280,343(暴击),绝杀!嗜血(4星,嗜血50%),完胜(absi2011的60级企鹅贫血,就315,玩过乐斗的别黑)!

    题目描述

    别说这是个巧合,这类绝杀还真不少。

    现在假设Boss还剩下的血为x,absi2011的企鹅剩y血,它拿出的武器的伤害最高是z。它的武器有几率连击。

    他问你有无可能绝杀(可连击)。如果能,请先输出一行”Yes”,不能输出”No”。如果他给你的数据是错的,请输出”Wrong Data”

    数据有这么几种情况算错:y<=0或y>315或y>=x或x>1800(当前斗神塔Boss好像没有超过1800血的)或z>=1000(红缨枪+天马流星拳+会心一击+残影+武器好手好像都达不到)或z<=100(absi2011认为小于等于100就不算绝杀了)

    (输出Yes后)接下来,他还想问绝杀(就算最高伤害)后如果触发他的3星嗜血/4星嗜血/5星吸星大法各能不能完胜。三星每次的嗜血嗜血量为33%*伤害(下取整),四星每次的嗜血嗜血量为50%*伤害(下取整),五星吸星大法嗜血量为100%*伤害(这还真不用下取整)。两次要分开算。如果超过血上限就不再回血了。

    如果三星能就输出一行”Great”,四星能就输出一行”Eh..”和一行”OK”,五星能就输出两行”Oh..”和一行”Yes , If he can get 5-star.”

    如果都不行,那么输出三行”No”和他4星嗜血后的血量。

    注意,有可能打一下Boss就挂了,那么不能连击嗜血了。只能算打死Boss那下的嗜血。

    输入输出格式

    输入格式:

    一行三个整数,x、y、z

    输出格式:

    如题目所描述

    输入输出样例

    输入样例#1:
    【样例输入1】
    392 4 343
    
    【样例输入2】
    392 1 101
    
    输出样例#1:
    【样例输出1】
    Yes
    Eh..
    OK
    
    【样例输出2】
    No
    

    说明

    【Hint】

    Boss死掉当且仅当Boss血<=0(其实<0会自动当成=0)

    【数据范围】

    对于30%的数据,保证结果为Wrong Data或No或Yes(回车)Great

    对于另外30%的数据,保证结果不为Wrong Data

    对于100%的数据,保证-10000<=x<=10000,-10000<=y<=10000,-10000<=z<=10000,即使Wrong Data了

    【题目来源】

    fight.pet.qq.com

    absi2011授权原创题目。

    有一个很诡异的点,,要写成z/2*2,不能使z。。

     1 #include <cstdio>
     2 
     3 inline void read(int &x)
     4 {
     5     x=0; register char ch=getchar();register char __=0;
     6     for(; ch>'9'||ch<'0'; ch=getchar()) if(ch=='-') __=1;
     7     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
     8     x=__?((~x)+1):x;
     9 }
    10 int x,y,z;
    11 
    12 inline bool judge()
    13 {
    14     return y<=0||y>315||y>=x||x>1800||z>=1000||z<=100;
    15 }
    16 
    17 int Presist()
    18 {
    19     read(x),read(y),read(z);
    20     if(judge()) {printf("Wrong Data
    ");return 0;}
    21     if(z<<1<x) {printf("No
    ");return 0;}
    22     printf("Yes
    ");
    23     if(z>=x)
    24     {
    25         if((z/3+y)>=315) {printf("Great
    ");return 0;}
    26         if((z/2+y)>=315) {printf("Eh..
    OK
    ");return 0;}
    27         if((z+y)>=315) {printf("Oh..
    Oh..
    Yes , If he can get 5-star.");return 0;}
    28         printf("No
    No
    No
    %d",z/2+y);return 0;
    29     }
    30     if((z/3*2+y)>=315) {printf("Great
    ");return 0;}
    31     if((z/2*2+y)>=315) {printf("Eh..
    OK
    ");return 0;}
    32     if((z*2+y)>=315) {printf("Oh..
    Oh..
    Yes , If he can get 5-star.");return 0;}
    33     printf("No
    No
    No
    %d",z+y);
    34     return 0;
    35 }
    36 
    37 int Aptal=Presist();
    38 int main(int argc,char**argv){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    九度-题目1197:奇偶校验
    九度-题目1073:杨辉三角形
    九度-题目1072:有多少不同的面值组合?
    同步异步,阻塞非阻塞
    注解方式配置bean
    监听器
    自定义系统初始化器
    构建流
    数值流
    流的使用
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7694976.html
Copyright © 2011-2022 走看看