龙的战争 Dragon ‘s War

编程入门 行业动态 更新时间:2024-10-25 06:27:08

龙的<a href=https://www.elefans.com/category/jswz/34/1769413.html style=战争 Dragon ‘s War"/>

龙的战争 Dragon ‘s War

题目描述

Kirito现在被困在一个MMORPG游戏当中,为了离开这个游戏,他现在必须和  条龙进行战斗,Kirito和这 头龙都有一个力量值,用整数表示,Kirito最初的力量值为 。如果在Kirito和第 头龙 的对决当中,Kirito的力量不大于龙的力量 ,那么,Kirito将输掉对决并死亡。如果Kirito的力量大于龙的力量,那么,Kirito将打败这条龙并且升级获得额外的力量提升。

现在,Kirito可以按照任意顺序和这些龙进行决斗,请问,Kirito能否离开这个游戏,即Kirito能够战胜所有的 头龙并且没有死亡。 

输入格式

题目包含 !多组 ! 输入

第一行输入两个数字 和 ,表示Kirito的初始力量值和龙的数量。

接下来  行,每行输入两个数字 和 。表示第  条龙的力量以及Kirito击败这头龙能够获得的额外力量值。

输出格式

如果Kirito能够离开这个游戏,则输出””, 否则,则输出””.

样例

样例输入

2 2
1 99
100 0

样例输出

YES

分析

        这一题是一道非常简单的贪心题。

        我们将龙从小到大按顺序排列,这样可以打败尽可能多的龙,从而积累更多的战斗力。
最佳贪心策略就是比较 ,最小的最先做,从而积累 。

#include<cstdio>
#include<algorithm>
#include<cstring>using namespace std;const int MAXN = 10005;struct node{int xi, yi;
}a[MAXN]; //结构体bool cmp(node x, node y){return x.xi < y.xi;
} //先找战斗力小的龙int main(){int s, n;while(scanf("%d %d",&s,&n) != EOF){ // 多组数据,无限输入for(int i=1; i<=n; i++){scanf("%d%d", &a[i].xi, &a[i].yi);}sort(a+1, a+1+n, cmp);bool flag = false;for(int i=1; i<=n; i++){if(s > a[i].xi){ // 赢了s += a[i].yi; // 加能量}else{ // 输了flag = true;break;}}if(flag == true)printf("NO\n");else{printf("YES\n");}}return 0;
}

麻烦点个赞!!~~~

更多推荐

龙的战争 Dragon ‘s War

本文发布于:2023-07-03 03:18:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1000494.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:战争   Dragon   War

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!