博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JZOJ 4.1 C组【GDOI2005】积木分发
阅读量:5220 次
发布时间:2019-06-14

本文共 988 字,大约阅读时间需要 3 分钟。

Description

  歌手The Pancakes到幼儿园跟小朋友玩,她到达的时候小朋友已经争着积木玩了。小朋友都想要更多的积木砌一个自己喜欢的图形,砌玩就可以和The Pancakes合照。同时,The Pancakes手上还有一些积木,她可以把手里的这些积木全部给一个小朋友,然后等该小朋友砌完后就可以收回所发的积木和该小朋友原先手里的积木。但她不知道能否让所有的小朋友都和她合照,聪明的你可以帮助她吗?

Input

  输入包含多个数据。

  每个数据的第一行是两个正整数n和s,1<=n<=10000,1<=s<=10000,表示一共有n位小朋友,The Pancakes手上有s块积木。以下有n行,每行有两个正整数,a和b,1<=a,b<=10^9,表示第i个小朋友手上有a块积木,还需要b块积木才能够砌完。
  输入两个0时表示结束。

Output

  如果可以让所有小朋友都和Pancake合照,就输出YES;否则,输出NO。

Sample Input

2 2

1 4
2 1
2 2
1 4
1 1
0 0

Sample Output

YES

NO


题解:

先将需要的积木从小到大排一遍.。

然后判断:
① 如果当前的需要的积木大于到目前为止所可以得到的积木,则退出;
② 如果当前的需要的积木小于等于目前为止可以得到的积木,将目前为止得得到的积木+小朋友拥有的积木(因为小朋友砌完,就可以获得小朋友的积木)


代码如下:

#include 
#include
using namespace std;int i,n;long long s,a[10001][2];void qs(int l,int h){ int i=l,j=h; long long mid=a[(l+h)/2][0],mid2=a[(l+h)/2][1],t; do { while (a[i][1]
mid) i++; while (a[j][1]>mid2||a[j][1]==mid2&&a[j][0]

转载于:https://www.cnblogs.com/Comfortable/p/8412345.html

你可能感兴趣的文章
Sql常见面试题 受用了
查看>>
知识不是来炫耀的,而是来分享的-----现在的人们却…似乎开始变味了…
查看>>
CSS背景颜色、背景图片、平铺、定位、固定
查看>>
口胡:[HNOI2011]数学作业
查看>>
我的第一个python web开发框架(29)——定制ORM(五)
查看>>
中国剩余定理
查看>>
基础笔记一
查看>>
uva 10137 The trip
查看>>
Count Numbers
查看>>
编写高质量代码改善C#程序的157个建议——建议110:用类来代替enum
查看>>
网卡bond技术
查看>>
UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
查看>>
UNIX基础知识之输入和输出
查看>>
【洛谷 P1666】 前缀单词 (Trie)
查看>>
对称加密和非对称加密
查看>>
数据库锁机制及乐观锁,悲观锁的并发控制
查看>>
图像处理中双线性插值
查看>>
RobHess的SIFT代码解析之RANSAC
查看>>
03 线程池
查看>>
201771010125王瑜《面向对象程序设计(Java)》第十三周学习总结
查看>>