「CF230A」龙的战争(详细分析)

编程入门 行业动态 更新时间:2024-10-23 23:21:29

「CF230A」龙的<a href=https://www.elefans.com/category/jswz/34/1769413.html style=战争(详细分析)"/>

「CF230A」龙的战争(详细分析)

题目描述

Kirito现在被困在一个MMORPG游戏当中,为了离开这个游戏,他现在必须和n条龙进行战斗,Kirito和这n头龙都有一个力量值,用整数表示,Kirito最初的力量值为s。如果在Kirito和第i头龙(1 ≤ i ≤ n)的对决当中,Kirito的力量不大于龙的力量xi,那么,Kirito将输掉对决并死亡。如果Kirito的力量大于龙的力量,那么,Kirito将打败这条龙并且升级获得额外的力量提升。
现在,Kirito可以按照任意顺序和这些龙进行决斗,请问,Kirito能否离开这个游戏,即Kirito能够战胜所有的n头龙并且没有死亡。

输入格式:
题目包含多组输入
第一行输入两个数字s和n(1 ≤s ≤ 1e4, 1 ≤ n≤ 1e3),表示Kirito的初始力量值和龙的数量。
接下来n行,每行输入两个数字xi和yi(1 ≤xi ≤ 1e4, 0 ≤ yi≤ 1e4),表示第i头龙的力量以及Kirito击败这头龙能够获得的额外力量值。

输出格式:
如果Kirito能够离开这个游戏,则输出”YES”,否则,则输出”NO”.

样例

样例输入:
2 2
1 99
100 0
样例输出:
YES

样例输入:
10 1
100 100
样例输出:
NO

算法分析

这一题是一道非常简单的贪心题,只需要一个简单的排序,就可以完成。
最佳贪心策略就是比较X i ,最小的最先做,从而积累Y i

思路很简单,代码量也不多。

代码

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int M=10005;
struct node{int xi,yi;
}a[M];
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");}}
}

更多推荐

「CF230A」龙的战争(详细分析)

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

发布评论

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

>www.elefans.com

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