题目描述 Description
(本故事纯属虚构,如有雷同纯属巧合)
今天体育老师在操场上打球,把所有的篮筐全部霸占上了,他们很霸道,不让我们打球,没办法我们只能看他们打球了。这时我们班的傻大个来了,想为我们打抱不平,要和体育老师一决高下,他向体育老师发起了挑战!我们都为傻大个捏了把汗,他究竟能不能胜利呢?让我们为他算算吧!
输入描述 Input Description
第一行一个整数n表示体育老师的人数
第二行至第n+1行 每行两个整数 p,h表示体育老师的体力数值值和攻击力数值
第n+2行 两个整数 x,y 表示我们班傻大个的攻击力数值和体力数值
注意:体育老师也很文明他们也是一个一个和傻大个打,不是好多人一起打傻大个
输出描述 Output Description
输出只有一行如果傻大个可以打败体育老师输出"yes!!very good"否则输出"oh shit!"
样例输入 Sample Input
1
4 5
6 6
样例输出 Sample Output
yes!!very good
数据范围及提示 Data Size & Hint
1.体育老师一个一个和傻大个打
2.任何一个体育老师和傻大个打完之后傻大个只保持打完后的体力值,并不回复!
3.傻大个和体育老师打架采用回合制(就是傻大个先打,然后是体育老师,这样轮流下去,直到有一方败北)
4.任何时候都是傻大个先攻击
5.每回合的掉血量就是对方的攻击力
6..体力值<=0的时候算败北
例:傻大个的攻击力是6,体力6,只有一个体育老师和他对战,体育老师的攻击力是5,体力是4,傻大个先手,他攻击力直接把体育老师体力打成-2,傻大个胜,所以输出yes!!very good
n<=65 其他数均在int范围内
纯模拟,
刚以为要排序,其实不用,按顺序来的。
ac代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; int n,x,y; struct node{ int energy,attack; }a[66]; int main() { scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d%d",&a[i].energy ,&a[i].attack ); scanf("%d%d",&x,&y); for(int i=1;i<=n;++i) { a[i].energy -=x; if(a[i].energy <=0) continue; y-=a[i].attack ; if(y<=0) { printf("oh shit!"); return 0; } } printf("yes!!very good"); return 0; }