当前位置: 首页 > news >正文

POJ 3104:Drying(二分)

题目大意:你有一台机器可以烘干衣物,现在有n个衣物需要烘干,每件衣服都有一个值表示含水量,烘干机一秒可以烘干k滴水,一件衣服不在烘干机上时会每秒自动蒸发一滴水,求最少用多少时间烘干所有衣服。

分析:

  二分总时间,我们知道,如果一件衣服的含水量不超过总时间,就没有必要用烘干机烘干。对于超过的衣服,我们设它在烘干机上烘的时间为x,自己蒸发的时间为mid-x(mid为二分的时间),如果能烘干衣服,则可得到关系k*x+mid-x>=a[i],得到x>=(a[i]-mid)/(k-1),因为我们希望在能蒸干这件衣服前提下让在烘干机上的时间最短,这样才能使别的衣物有更多时间,所已x取最小值(注意向上取整),我们把所有衣物在烘干机上的最短时间加起来,判断有没有超过mid,然后改变上下界,最终找到答案。

代码:

program drying;
var
  a:array[0..100000]of int64;
  n,i,m:longint; k,l,r,v,s,mid,ans:int64;
begin
  assign(input,'drying.in');
reset(input);
assign(output,'drying.out');
rewrite(output);
  readln(n);
  for i:=1 to n do
  begin read(a[i]); r:=r+a[i]; if a[i]>m then m:=a[i];end;
  readln(k);k:=k-1;
  if k=0 then writeln(m)
  else
  begin
  l:=1;
  while l<=r do
   begin
     mid:=(l+r) div 2;s:=0;
     for i:=1 to n do
       if a[i]>mid then s:=s+ord((a[i]-mid) mod k>0)+(a[i]-mid) div k;
     if s<=mid then begin ans:=mid; r:=mid-1; end else l:=mid+1;
   end;
  writeln(ans);
  end;
  close(input); close(output);
end.
View Code

 

转载于:https://www.cnblogs.com/qtyytq/p/5043261.html

相关文章:

  • ==与equals的区别
  • clone()函数的用法?
  • 《引领转型》访谈录
  • String类中getChars方法的用法
  • String类中toCharArray()方法的用法
  • Java和.NET两个平台安全性能对比
  • String类中getBytes()方法的用法
  • StringTokenizer类的用法
  • MAC OX 配置 Tomcat 说明
  • Character类的用法
  • ThreadPoolTaskExecutor异常收集
  • Date类的用法
  • Byte Short Integer Long Float Double类的使用
  • Java系列:Collection.toArray用法研究
  • Calendar类的用法
  • 「面试题」如何实现一个圣杯布局?
  • cookie和session
  • C学习-枚举(九)
  • Node 版本管理
  • react 代码优化(一) ——事件处理
  • React-redux的原理以及使用
  • scrapy学习之路4(itemloder的使用)
  • Windows Containers 大冒险: 容器网络
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 回流、重绘及其优化
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 推荐一个React的管理后台框架
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (TOJ2804)Even? Odd?
  • (补)B+树一些思想
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (十一)图像的罗伯特梯度锐化
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)appium-desktop定位元素原理
  • .NET中GET与SET的用法
  • @JoinTable会自动删除关联表的数据
  • @Not - Empty-Null-Blank
  • @Transactional 详解
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [《百万宝贝》观后]To be or not to be?
  • [20150321]索引空块的问题.txt
  • [2018/11/18] Java数据结构(2) 简单排序 冒泡排序 选择排序 插入排序
  • [ANT] 项目中应用ANT
  • [codevs 1515]跳 【解题报告】
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [Markdown] 02 简单应用 第二弹
  • [Noi2015]程序自动分析
  • [OGRE]看备注学编程(02):打地鼠01-布置场地九只地鼠
  • [Oracle]4--查询操作