问题描述:

最近的m天盾神都去幼儿园陪小朋友们玩去了~
  每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西。但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友的积木才能完成他的大作。如果某个小朋友完成了他的作品,那么他就会把自己的作品推倒,而无私地把他的所有积木都奉献出来;但是,如果他还没有完成自己的作品,他是不会把积木让出去的哟~
  盾神看到这么和谐的小朋友们感到非常开心,于是想帮助他们所有人都完成他们各自的作品。盾神现在在想,这个理想有没有可能实现呢?于是把这个问题交给了他最信赖的你。

输入说明:

第一行为一个数m。
  接下来有m组数据。每一组的第一行为n,表示这天有n个小朋友。接下来的n行每行两个数,分别表示他现在拥有的积木数和他一共需要的积木数。

  1<=n<=10000,1<=m<=10。

输出说明:

输出m行,如果第i天能顺利完成所有作品,输出YES,否则输出NO。

具体讲解在代码里面,思路很简单的,说的很易懂,uu们看了不懂算我输!

#include<iostream>
#include<algorithm>using namespace std;typedef struct Student//之所以写结构体是因为每个人有两个所属元素:拥有积木和所需积木//结构体封装起来便于后面精确定位;
{int pos;int ned;
}Stu;bool cmp(const Stu &x,const Stu &y)
{return x.ned<y.ned;//结构体sort排序用里面想排列的变量来比较;
}int main()
{int m,i,n,o,p,totpos,totned,pos,u;//totpos表示所有人拥有的积木的总和,totned表示//所有人中需要积木最多的人需要的积木数,pos表示//目前所累积的积木数;cin>>m;for(i=0;i<m;++i) {cin>>n;totpos=totned=pos=0;//每次循环初始化;Stu xs[n];for(o=0;o<n;++o) {cin>>xs[o].pos>>xs[o].ned;totpos+=xs[o].pos;if(xs[o].ned>totned) totned=xs[o].ned;//找出需要积木最多的人需要的积木数;}if(totned>totpos) {//如果需要积木最多的人需要的积木数都大于了所有人拥有的积木//数总和,绝对拼不完了,直接下轮循环;cout<<"NO"<<endl;continue;}sort(xs,xs+n,cmp);//定义一个cmp函数,使整个结构体数组按照所需的积木数的多少来升序排列;for(o=0;o<n;++o) {if(xs[o].ned<=xs[o].pos&&xs[o].pos>pos) {pos=xs[o].pos;//这里pos先没求目前所累积的积木数,而是先找出所有能够拼成功的//人中拥有积木数最多的人(可理解为所需积木数最多的人),那么//可知此人之前的所有人都能拼成功了,因为这个人的积木可以贡献//出去,数组是升序排的。u就是标记这个人的下标;u=o;}}pos=0;//pos开始累积前先赋值为0;for(o=0;o<n;++o) {if(o<=u) pos+=xs[o].pos;//由40行的话可知下标u那个人之前的人都能在得到积木之后//拼成功那么就把之前那些人的积木加上吧;else {if(pos+xs[o].pos>=xs[o].ned) {//加完u之前的所有积木就开始加后面的,但要一个//一个加加之前判断如果我加上后面那个人的积木能//不能满足他所需的积木?能就把他的积木加上再看//下一人,不能的话那么可以知道之后的人也满足不//了了(思考一下我这个论断对吗?),然后else输//出NO就跳出循环不看后面的人了。pos+=xs[o].pos;}else {cout<<"NO"<<endl;break;}}}if(pos==totpos) cout<<"YES"<<endl;//如果pos==totpos,说明所有人的积木都加了一遍,意思//就是满足了所有人因为由52行判断可知不满足那个人的//话不可能加他的积木;else cout<<"NO"<<endl;}return 0;
}

盾神与积木游戏 (贪心典例)相关推荐

  1. 算法提高 盾神与积木游戏

    算法提高 盾神与积木游戏   时间限制:1.0s   内存限制:256.0MB 问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们 ...

  2. [蓝桥杯][算法提高VIP]盾神与积木游戏(贪心)

    题目描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西.但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他 小朋 ...

  3. 蓝桥杯 ADV-194算法提高 盾神与积木游戏(贪心)

    问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西.但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友 ...

  4. 蓝桥杯试题盾神与积木游戏之论减少时间复杂度的重要性

    问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西.但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友 ...

  5. [Java] 蓝桥杯ADV-194 算法提高 盾神与积木游戏

    问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西.但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友 ...

  6. 蓝桥杯 ADV-194 算法提高 盾神与积木游戏 java版

    问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西.但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小朋友 ...

  7. OJ题--盾神与积木游戏

    问题描述 : 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们想要的东西.但是有的小朋友拿得多,有的小朋友拿得少,有些小朋友需要拿到其他小 ...

  8. #bzoj2240#积木游戏(DP? 贪心?)

    2240: 积木游戏 时间限制: 1 Sec  内存限制: 128 MB 题目描述 小时候我们都喜欢玩积木.这里的积木都是单位边长的正方体块,多个积木可以堆成一个"高木",&quo ...

  9. 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n ...

  10. vijos 1464 积木游戏 DP

    描述 积木游戏 SERCOI 最近设计了一种积木游戏.每个游戏者有N块编号依次为1 ,2,-,N的长方 体积木.对于每块积木,它的三条不同的边分别称为"a边"."b边&q ...

最新文章

  1. MapReduce编程系列 — 2:计算平均分
  2. Javascript prototype理解
  3. 东南大学c语言下学期期末考试题,东南大学C++期中考试题.doc
  4. Window将Redis设置为开机启动
  5. 吕梁离石学校计算机专业在哪里,山西吕梁计算机大专学校有哪些太重技校告诉您...
  6. 操作系统——实验叁——主存空间的分配与回收
  7. 使用jquery datatables插件遇到fnReloadAjax的问题
  8. 系统吞吐量、TPS(也叫QPS)、用户并发量、性能测试概念和公式
  9. 页脚保持在未满屏页面的底部
  10. android windowmanager 分析,WindowManagerService
  11. 中孚计算机保密 卸载,智华计算机终端保密检查系统怎样卸载
  12. cesium is not defined
  13. 【计算机图形学】【实验报告】太阳系绘制、B样条曲线绘制(附代码)
  14. python 简单点餐系统
  15. Vue中设置浏览器标签栏图标以及title
  16. 运放的基本应用电路-运放电路设计-运算放大器的基本应用电路
  17. CSS3 实现圆圈动态发光特效动画的制作
  18. nginx proxy_pass规则
  19. upload单独上传和统一上传
  20. Android点击WebView中的图片查看大图

热门文章

  1. 干货丨让你更容易影响别人的 52 个小技巧
  2. 最全电商分类信息(10)
  3. BabyMaker(预测宝宝未来长相软件) v1.5绿色中文破解版
  4. 企业支付宝转账到银行卡(免费率 无限额)PHP 演示示例
  5. 微电子学前沿讲座三-国产EDA的困境-刘伟民博士
  6. 如何才能找到影音文件的真实下载地址
  7. JS实现浏览器菜单命令
  8. 苹果开发者账号申请教程
  9. 宁德时代换挡,钠电池“接力”锂电池?
  10. 两步彻底关闭Windows默认共享文件夹(含IPC$)