bzoj 2016 二分答案
来源:互联网 发布:淘宝卖家违规怎么解除 编辑:程序博客网 时间:2024/05/17 17:14
Description
贝西从大牛那里收到了N块巧克力。她不想把它们马上吃完,而是打算制定一个计划,
使得在接下来的D天里,她能够尽量地快乐。贝西的快乐指数可以用一个整数来衡量,一开始的时候是0,当她每天晚上睡觉的时候,快乐指数会减半(奇数时向下取整)。贝西把她的巧克力按照收到的时间排序,并坚持按照这个顺序来吃巧克力。当她吃掉第i块巧克力的时候,她的快乐指数会增加Hj。每天可以吃任意多块巧克力,如何帮助贝西合理安排,使得D天内她的最小快乐指数最大呢?
举个例子:假设一共有五块巧克力,贝西打算在五天时间内将它们吃完,每块巧克力提
供的快乐指数分别为10,40,13,22,7。则最好的方案如F:
天数
起床时快乐指数
食用的巧克力
就寝时快乐指数
1
2
3
4
5
0
25
12
12
17
10+ 40
13
22
7
50
25
25
34
24
五天内的最小快乐指数为24,这是所有吃法中的最大值。
Input
第一行:两个用空格分开的整数:N和D,1≤N.D≤50000
第二行到第N+1行:第1+1行表示第i块巧克力提供的快乐指数Hj,1≤Hi≤1000000
Output
第一行:单个整数,表示贝西在接下来D天内的最小快乐指数的最大值
第二行到第N+1:在第i+l行有一个整数,代表贝西应该在哪一天吃掉第i块巧克力。
如果有多种吃法,则输出按照词典序排序后最靠后的方案
显然的二分答案,因为要输出字典序最靠后的方案,所以check的时候就只需要当天满足即可,然后剩下的下一天吃,注意剩下的巧克力要在最后一天吃完,这样就能保证字典序最靠后。
mdzz居然3A,忘记二分出ans后重新更新方案数组了居然就傻乎乎的直接输出了,zz起来我自己都害怕
var n,m :longint; i :longint; l,r,mid,ans :int64; a,day :array[0..50010] of longint;function check(x:int64;f:boolean):boolean;var now:int64; i,j:longint;begin now:=0; j:=1; for i:=1 to m do begin while (now<x) and (j<=n) do begin inc(now,a[j]); if f then day[j]:=i; inc(j); end; if now<x then exit(false); now:=now div 2; end; if f then for i:=j to n do day[i]:=m; exit(true);end;begin read(n,m); for i:=1 to n do begin read(a[i]); inc(r,int64(a[i])); end; l:=0; while (l<=r) do begin mid:=(l+r)>>1; if check(mid,false) then begin l:=mid+1; if mid>ans then ans:=mid; end else r:=mid-1; end; writeln(ans); check(ans,true); for i:=1 to n do writeln(day[i]);end.——by Eirlys
0 0
- bzoj 2016 二分答案
- BZOJ-5090 (二分答案)
- BZOJ 3761 甄嬛 二分答案
- BZOJ 2792 Poi2012 Well 二分答案
- [BZOJ 2654] tree · 二分答案
- BZOJ 2654 tree 二分答案+Kruskal
- [二分答案 物理 数学] BZOJ 3695 滑行
- [主席树 二分答案] BZOJ 2653 middle
- [二分答案 贪心] BZOJ 3248 [ioi2013]robots
- bzoj 1532 二分答案+最大流判断
- Bzoj 2282: [Sdoi2011]消防(二分答案)
- BZOJ 1052 二分答案 解题报告
- BZOJ 4985: 评分 二分答案 dp判定
- [二分答案][网络流验证][BZOJ 3232]圈地游戏
- BZOJ 1038 ZJOI2008 瞭望塔 模拟退火+二分答案
- BZOJ 2097 Exercise 奶牛健美操 二分答案+树形DP+贪心
- BZOJ 2653 middle 二分答案+可持久化线段树
- BZOJ 1044 HAOI2008 木棍分割 二分答案+动态规划
- 这是第一篇
- 检测本地localStorage的key-value 中value最大字节
- CentOS7上配置Open vSwitch和VXLAN实例
- git本地存储库如何强制更新github上的代码?
- json排序后序列号
- bzoj 2016 二分答案
- 《剑指offer》—4、重建二叉树
- mysql中时间数据比较查询问题
- JFinal插入Oracle时间注意
- Java正则表达式的语法与示例
- 设计模式——开篇
- RxJava学习资料
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器