• 漂亮的绝杀 题解


    题目背景

    话说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授权原创题目。

    思路

    安利博客

    小伙伴做题时会对题意不理解吗?

    我先解释一下题意。

    连击最多只能打两下。概率是没有用的。这里直接算就行。


    先用“||”判断数据有没有锅


    再用连击两下和boss比较

    (z<<1)<=>x
    

    看看可以不可以杀死

    输出

    Yes或No


    再用x和z比较

    z<=>x
    

    一下死就直接计算即可。

    if(z>x)
    		{
    			if(int(z*0.33)+y>=315){
    				cout<<"Great"<<endl;
    			}
    			else if(int(z*0.5)+y>=315){
    				cout<<"Eh.."<<endl<<"OK"<<endl;
    			}
    			else if(int(z+y>=315){
    				cout<<"Oh.."<<endl<<"Oh.."<<endl<<"Yes , If he can get 5-star."<<endl;
    			}
    			else {
    				cout<<"No"<<endl<<"No"<<endl<<"No"<<endl;
    			}
    		}
    

    两下就乘2。

    {
    			if(2*int(z*0.33)+y>=315){
    				cout<<"Great"<<endl;
    			}
    			else if(2*int(z*0.5)+y>=315){
    				cout<<"Eh.."<<endl<<"OK"<<endl;
    			}
    			else if(2*int(z+y)>=315){
    				cout<<"Oh.."<<endl<<"Oh.."<<endl<<"Yes , If he can get 5-star."<<endl;
    			}
    			else {
    				cout<<"No"<<endl<<"No"<<endl<<"No"<<endl;
    			}
    

    注意换行。

    计算时要强制转int

    全篇的if/else判断即可

    代码有锅 勿抄。 QuQ.

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #define INF 0x7fffffff
    #define ll long long
    #define IL inline
    #define R register
    using namespace std;
    int x,y,z;
    
    int main()
    {
       cin>>x>>y>>z; 
       if(y<=0||y>315||y>=x||x>1800||z>=1000||z<=100)
       {
       	cout<<"Wrong Data"<<endl;
       	//exit(0);结束
       	return 0; 
       }
       if((z<<1)<=x)
       {
       	cout<<"Yes"<<endl;
       	return 0;
       }
       else {
       	cout<<"No"<<endl;
       	if(z>x)
       	{
       		if(int(z*0.33)+y>=315){
       			cout<<"Great"<<endl;
       		}
       		else if(int(z*0.5)+y>=315){
       			cout<<"Eh.."<<endl<<"OK"<<endl;
       		}
       		else if(int(z+y>=315){
       			cout<<"Oh.."<<endl<<"Oh.."<<endl<<"Yes , If he can get 5-star."<<endl;
       		}
       		else {
       			cout<<"No"<<endl<<"No"<<endl<<"No"<<endl;
       		}
       	}
       	else {
       		if(2*int(z*0.33)+y>=315){
       			cout<<"Great"<<endl;
       		}
       		else if(2*int(z*0.5)+y>=315){
       			cout<<"Eh.."<<endl<<"OK"<<endl;
       		}
       		else if(2*int(z+y)>=315){
       			cout<<"Oh.."<<endl<<"Oh.."<<endl<<"Yes , If he can get 5-star."<<endl;
       		}
       		else {
       			cout<<"No"<<endl<<"No"<<endl<<"No"<<endl;
       		}
       	}
       }
       return 0;
    }
    

    by enceladus 不要变棕QwQ

  • 相关阅读:
    C++雾中风景16:std::make_index_sequence, 来试一试新的黑魔法吧
    神经网络中的降维和升维方法 (tensorflow & pytorch)
    论文翻译:2020_Residual Acoustic Echo Suppression Based On Efficient Multi-Task Convolutional Neural Network
    论文翻译:2018_Deep Learning for Acoustic Echo Cancellation in Noisy and Double-Talk Scenarios
    十分钟入门Apollo
    SpringSecurity实现OAuth2+JWT
    实现Vue的多页签组件
    原生redis命令
    .NET Core学习笔记(8)——Entity Framework Core之Database First
    函数极限的计算_计算机程序化实现的理论基础
  • 原文地址:https://www.cnblogs.com/enceladus-return0/p/9570504.html
Copyright © 2020-2023  润新知