题目不是非常难

大体思路:

题意:烘干机,给出一堆衣服的水分a[i],在不加烘干机情况下自己主动每一分钟降低1水分。每分钟能够变改衣服(i)到烘干机中,每分钟降低k水分,求最少须要多少时间。
题解:第一时间就想到使用二分枚据答案+验证这样的思路,只是这题还是有些陷阱须要注意。
1. 验证答案时,假设 a[i] <= mid。让它自然烘干就可以 。 假设a[i] > mid,那么烘干这件衣服能够分成两段时间:使用烘干机时间x1 + 自然烘干时间x2,那么能够列出等式:mid = x1 + x2; a[i] <= kx1+x2;于是得x1 >= (a[i] -mid)/(k-1);即得使用烘干机的最少时间x1
2.注意当k==1时。k-1 == 0。须要特殊处理。直接打出ans = maxV
3.注意当求left+right时,结果可能超出范围,正确的方法应该是left + (right - left)*0.5;

犯了一个非常2的错误,ceil(int/int),应该是ceil(int*1.0/int)

再次验证我的二分写法没错,哇哈哈哈

标准的

while l<r

l=mid+1;

r=mid;

mid=l+(r-l)/2;

代码例如以下

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
using namespace std;long long num[111111];
int main()
{//cout<<"here"<<endl;//cout<<ceil(3.4)<<endl;//cout<<ceil(4)<<endl;//cout<<"end"<<endl;long long n,k;long long maxn=0;while(scanf("%lld",&n)!=EOF){for(long long i=1;i<=n;i++){scanf("%lld",&num[i]);maxn=max(maxn,num[i]);}sort(num+1,num+1+n);scanf("%lld",&k);if(k==1){printf("%lld\n",maxn);continue;}long long l=1,r=maxn,mid=(r+l)/2;long long ans=0;while(l<r){//mid=(l+r)/2;long long sum=0;for(long long i=1;i<=n;i++){if(num[i]>mid)sum+=ceil((num[i]-mid)*1.0/(k-1));}if(sum>mid)l=mid+1;else if(sum<=mid){r=mid;}mid=(l+r)/2;}printf("%lld\n",mid);}
}

POJ3104 Drying [二分]相关推荐

  1. poj3104 Drying(二分最大化最小值 好题)

    https://vjudge.net/problem/POJ-3104 一开始思路不对,一直在想怎么贪心,或者套优先队列.. 其实是用二分法.感觉二分法求最值很常用啊,稍微有点思路的二分就是先推出公式 ...

  2. POJ 3104 Drying [二分 有坑点 好题]

    传送门 表示又是神题一道 Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9327   Accepted: 23 ...

  3. Drying(二分)

    链接:Drying 描述 现有 n 件衣服需要烘干,每件衣服的含水量为 a [ i ].如果自然晾干,每分钟含水量减少1.如果使用烘干机烘干,每分钟含水量减少 k (直至为0)只有一台烘干机,每次只能 ...

  4. POJ 3104 Drying 二分

    http://poj.org/problem?id=3104 题目大意: 有n件衣服,每件有ai的水,自然风干每分钟少1,而烘干每分钟少k.求全部弄干的最短时间. 思路: 注意烘干时候没有自然风干. ...

  5. poj3104(二分判断可行性)

    /* translation:要使得一排衣服晾干,自然风干每分钟蒸发1单位的水分.用烘干机的话每分钟蒸发k单位的水分.求把所有衣物晾干的话至少需要多长时间? solution:二分查找最小可行解首先二 ...

  6. ICPC程序设计题解书籍系列之三:秋田拓哉:《挑战程序设计竞赛》(第2版)

    白书<挑战程序设计竞赛>(第2版)题目一览 白书:秋田拓哉:<挑战程序设计竞赛>(第2版) 第1章 蓄势待发--准备篇(例题) POJ1852 UVa10714 ZOJ2376 ...

  7. java sqls.add(),java 高效批量插入 sqlserver 数据库

    PHP读取Excel数据写入数据库(包含图片和文字) public function test(){ $exts = 'xlsx'; //导入PHPExcel类库,因为PHPExcel没有用命名空间, ...

  8. Drying POJ - 3104 二分

    Drying    POJ - 3104  二分      http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...

  9. poj 3104 Drying(二分查找)

    题目链接:http://poj.org/problem?id=3104 Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissio ...

最新文章

  1. 欧盟发布《人工智能道德准则》:「可信赖 AI」才是 AI 的指路明灯
  2. MySQL快速入门指南
  3. 【R】【BiocManager::install】R语言装包
  4. HtmlUnit自动填写表单并提交
  5. Quick Cocos2dx 场景转换问题
  6. PHP 实现定时任务的几种方法
  7. 熬夜伤身,建议通宵!
  8. Ural 1043 Cover the Arc
  9. ACCESS网上书店数据库系统
  10. 解放生产力「GitHub 热点速览 v.21.51」
  11. mysql jdbc 绑定变量_「MySQL高级特性——绑定变量」- 海风纷飞Blog
  12. mysql partition赋权_Mysql的赋权
  13. 网页防篡改使用详解及体会
  14. 旅游评论文本数据,bert分类,加完整的论文
  15. 入门者必看!SharePoint之CAML总结(实战)
  16. 苹果系统版本依次顺序_iphone所有型号上市顺序
  17. android 应用程序Activity管理类
  18. skywalking源码分析第十八篇一agent端Trace三部曲一Span栈桢机制
  19. S71200西门子PLC一个设计的接线图
  20. 今天发现了一个好网站,推荐给大家!

热门文章

  1. 【图像处理】MATLAB:退化函数及多种复原方法
  2. 全球及中国在线总有机碳分析仪行业竞争趋势与投资动态建议报告2022版
  3. 淡季不淡!速卖通户外运动产品好做吗?来看看法国这些爆款!
  4. 如何配置IIS服务器使用的中间证书( 微软 KB954755)
  5. 简单介绍Linux下安装Tomcat的步骤
  6. 仅通过崩溃地址找出源代码的出错行
  7. HTTP代理如何正确处理Cookie(1)
  8. openresty开发系列1--网关API架构及选型
  9. 数据结构——树、森林和二叉树之间的转换
  10. Linux Shell脚本编程学习笔记和实战