jzoj P1026【GDOI2005】积木分发
来源:互联网 发布:管家婆软件的优缺点 编辑:程序博客网 时间:2024/05/29 02:56
题目大意:
歌手The Pancakes有s块积木,每一个小朋友有a块积木,还要b块才能砌好图形。如果她的积木能帮n个小朋友全部砌完图形,就可以与所有小朋友合影,并且她可以把积木给一个小朋友,然后等该小朋友砌完后就可以收回所发的积木和该小朋友原先手里的积木。能跟所有小朋友合影就输出YES,不然输出NO。
(1<=s,n<=10000),(1<=a,b<=10^9)
题解:
排序+模拟+贪心:
1.对于每一个b我们可以很容易发现贪心策略,每一次找需要积木最少的给予,就可以保证最优解,所以以b为关键字排序。
2.模拟做过去,如果当前The Pancakes的积木可以帮助需要积木数第k小的小朋友砌完即>b[k]就累加a[k],不然如果第k小都做不了,第k+1小自然做不了就退出。
3.如果能一直做到结束就代表可以帮助全部砌完,输出YES,不然输出NO。
时间复杂度:O(N)
var a,b:array [0..10001] of longint; i,n:longint; m:int64;procedure qsort(l,r:longint);var i,j,mid:longint;begin if l>=r then exit; i:=l; j:=r; mid:=b[(l+r) div 2]; repeat while b[i]<mid do inc(i); while b[j]>mid do dec(j); if i<=j then begin a[0]:=a[i];a[i]:=a[j];a[j]:=a[0]; b[0]:=b[i];b[i]:=b[j];b[j]:=b[0]; inc(i); dec(j); end; until i>j; qsort(i,r); qsort(l,j);end;begin readln(n,m); while (n<>0) or (m<>0) do begin for i:=1 to n do readln(a[i],b[i]); qsort(1,n); i:=0; while (m>=b[i+1]) and (i<n) do begin inc(i); m:=m+a[i]; end; if i=n then writeln('YES') else writeln('NO'); readln(n,m); end;end.
1 0
- jzoj P1026【GDOI2005】积木分发
- JZOJ 4.1 C组【GDOI2005】积木分发
- JZOJsenior1026.【GDOI2005】积木分发
- jzoj P1027【GDOI2005】电路稳定性
- jzoj P1028【GDOI2005】飞越原野
- 积木分发
- 积木分发
- 积木分发
- 积木分发
- JZOJ 4.1 C组 【GDOI2005】电路稳定性
- 2011分区联赛模拟试题 积木分发(jzoj提高C组)
- 2011分区联赛模拟试题 积木分发(jzoj提高C组)
- JZOJ 4743 积木
- 1134. 积木分发
- sicily 1134 积木分发
- Sicily 1134 积木分发
- sicily--1134 积木分发
- Sicily 1134 积木分发
- Nginx
- Momentum(动量/冲量)的理解及应用
- 获取未安装的APK图标、版本、包名、名称、是否安装、安装、打开
- JAVA线程池----ThreadPoolExecutor机制
- 区块链的基本概念
- jzoj P1026【GDOI2005】积木分发
- Android与javascript交互
- 登录检查拦截器 (ActionInvocation的理解--转载)
- 使用video.js时,iframe内嵌视频无法全屏的问题
- 前6名免费DNS服务
- 重建二叉树
- 【BZOJ 3626】【LNOI 2014】LCA【树链剖分】
- AndroidStudio项目提交(更新)到github最详细步骤
- [网页自动化/测试]Firefox selenium plugin 安装及使用