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){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    POJ3159 Candies —— 差分约束 spfa
    POJ1511 Invitation Cards —— 最短路spfa
    POJ1860 Currency Exchange —— spfa求正环
    POJ3259 Wormholes —— spfa求负环
    POJ3660 Cow Contest —— Floyd 传递闭包
    POJ3268 Silver Cow Party —— 最短路
    POJ1797 Heavy Transportation —— 最短路变形
    POJ2253 Frogger —— 最短路变形
    POJ1759 Garland —— 二分
    POJ3685 Matrix —— 二分
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7694976.html
Copyright © 2011-2022 走看看