题目链接:click here~~

【题目大意】:

题意:有一些衣服,每件衣服有一定水量,有一个烘干机,每次能够烘一件衣服,每分钟能够烘掉k单位水。

每件衣服没分钟能够自己主动蒸发掉一单位水,

用烘干机烘衣服时不蒸发。问最少须要多少时间能烘干全部的衣服。

【解题思路】:

题目数据较大。常规方法肯定会TE。首先能够想到二分枚举答案。枚举时间mid值,(一般二分的题目,题目叫你求什么,就二分什么就能够了)

那么相应两种方法

1:自然风干。2:吹风机吹干

若一件衣服的水量小于mid,则自然风干就可以,否则。如果吹风机花费时间X。用于风干的时间为Y。吹风机一分钟可以吹干的水量为k,

则可得到下面两式 :

X+Y=mid。

X+Y*k>=ai  ;

由以上两式可得Y>=(ai-mid)/(k -1)(关键啊。)

算出全部含水量大于mid的衣服的最小的Y(事实上就是把Y相加)得到sum ,最后sum与mid比較,return y<=mid就可以。

代码:

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <iostream>
#include <algorithm>
using namespace std;
const int N=1e5+10;
int a[N];
int n,m,k;
bool get(int mid)
{
int y=0;
for(int i=0; i<n; i++){
if(a[i]<=mid) continue;
else{
y+=ceil((double)(a[i]-mid)/(k-1));//一定要注意精度啊,不加ceil((double))会WA啊。
}
if(y>mid) return false;
}
return y<=mid;
}
int main()
{
// freopen("1.txt","r",stdin);
scanf("%d",&n);
int maxx=0;
for(int i=0; i<n; ++i){
scanf("%d",&a[i]);
maxx=max(maxx,a[i]);
}
//cout<<"maxx=="<<maxx<<endl;
scanf("%d",&k);
if(k==1)printf("%d\n",maxx);
else{
int ll=0,rr=maxx;
for(int i=1; i<=100; i++){
int mid=(ll+rr)/2;
if(get(mid))rr=mid;
else ll=mid;
}
printf("%d\n",ll+1);
}
return 0;
}

POJ 3104 Drying (二分+精度)的更多相关文章

  1. POJ 3104 Drying(二分答案)

    题目链接:http://poj.org/problem?id=3104                                                                  ...

  2. POJ 3104 Drying 二分

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

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

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

  4. POJ 3104 Drying(二分答案)

    [题目链接] http://poj.org/problem?id=3104 [题目大意] 给出n件需要干燥的衣服,烘干机能够每秒干燥k水分, 不在烘干的衣服本身每秒能干燥1水分 求出最少需要干燥的时间 ...

  5. poj 3104 Drying(二分查找)

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

  6. POJ 3104 Drying(二分

    Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22163   Accepted: 5611 Descripti ...

  7. POJ 3104 Drying (经典)【二分答案】

    <题目链接> 题目大意: 有一些衣服,每件衣服有一定水量,有一个烘干机,每次可以烘一件衣服,每分钟可以烘掉k滴水.每件衣服没分钟可以自动蒸发掉一滴水,用烘干机烘衣服时不蒸发.问最少需要多少 ...

  8. poj 3104 Drying(二分搜索之最大化最小值)

    Description It is very hard to wash and especially to dry clothes in winter. But Jane is a very smar ...

  9. poj 3104 dring 二分

    Drying Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7684   Accepted: 1967 Descriptio ...

随机推荐

  1. Centos 7安装Mysql5.7

    1.下载(国内镜像,比搜狐的快一点):http://mirrors.ustc.edu.cn/mysql-ftp/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc ...

  2. 【HIHOCODER 1052 】基因工程(贪心)

    链接 问题描述 小Hi和小Ho正在进行一项基因工程实验.他们要修改一段长度为N的DNA序列,使得这段DNA上最前面的K个碱基组成的序列与最后面的K个碱基组成的序列完全一致. 例如对于序列"A ...

  3. 【HDU 6006】Engineer Assignment(状压DP)

    Problem Description In Google, there are many experts of different areas. For example, MapReduce exp ...

  4. SQL Server 上关于同一张表里的三级联动

    或许这并不能叫做三级联动,三级联动是很容易实现的东西,有明确的层级关系,一般分开三张表存储.我在公司的项目里遇到这样一个问题,同一张表里面,有分公司,客户,项目3种关系,他们的层级关系是这样:分公司- ...

  5. jquery获取ul中li的值

  6. xtu DP Training C.炮兵阵地

    炮兵阵地 Time Limit: 2000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID: 11856 ...

  7. 匈牙利游戏(codevs 1269)

    题目描述 Description Welcome to the Hungary Games! The streets of Budapest form a twisted network of one ...

  8. RedisDesktopManager 踩坑之旅

    虚拟机上装了redis, 本地Windows的RedisDesktopManager  connect failed. 解决方法: 1.修改 redis.conf 文件 bind 127.0.0.1 ...

  9. python学习之-- random模块

    random模块random.random():随机打印一个小数random.randint(1,10):随机打印1-10之间的任意数字(包括1和10)random.randrange(1,10):随 ...

  10. Codeforces 658D Bear and Polynomials【数学】

    题目链接: http://codeforces.com/contest/658/problem/D 题意: 给定合法多项式,改变一项的系数,使得P(2)=0,问有多少种方法? 分析: 暴力求和然后依次 ...