题目大意:有n件湿的衣服,每件衣服都有相应的湿度,每分钟每件衣服的湿度减1(除了在烘干机里的衣服),现在有一个烘干机,烘干机一分钟可以让一件衣服的湿度降低k,问至少要花多少分钟才能使每件衣服的湿度为0

解题思路:贪心的话,每分钟都要使用到烘干机。 

枚举时间,如果湿度小于等于时间的话,就不用考虑了,在枚举时间内肯定会干的 

如果湿度大于枚举时间的话,就要考虑一下了,该衣服要在给定时间内湿度变为零的话就要满足该式子,设已经过了cnt分钟了,当前这件衣服的湿度为num[i],枚举的时间为mid,那么 (num[i] - cnt) - n * k <= mid - cnt - n 也就是n =(num[i] - cnt) / (k - 1),如果有余数的话,时间还要+1;

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=100005;
int maze[maxn];
int Max,n,k;;
int cmp(const int a,const int b){
return a>b;
}
bool judge(int mid)
{
int Time=0;
for(int i=0;i<n;i++)
{
if(maze[i]<mid)//maze递减,如果maze[i]<mid,则i和i后面的衣服一定可以晾干
break;
if(Time>mid)
return false;
Time+=(maze[i]-mid)/(k-1);
if((maze[i]-mid)%(k-1))
Time++;
}
return Time<=mid;
}
int solve()
{
int l=0,r=Max,mid;
while(l<r)
{
mid=(l+r)/2;
if(judge(mid))
r=mid;
else
l=mid+1;
}
return r;
}
int main ()
{
while(~scanf("%d",&n))
{
for(int i=0;i<n;i++)
scanf("%d",&maze[i]);
scanf("%d",&k);
sort(maze, maze+n, cmp);
Max=maze[0];
if(k<=1){
printf("%d\n",maze[0]);
continue;
}
else printf("%d\n",solve()); }
return 0;
}

POj-3104 Drying 二分+贪心的更多相关文章

  1. POJ 3104 Drying(二分答案)

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

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

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

  3. POJ 3104 Drying 二分

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

  4. POJ 3104 Drying (二分+精度)

    题目链接:click here~~ [题目大意]: 题意:有一些衣服,每件衣服有一定水量,有一个烘干机,每次能够烘一件衣服,每分钟能够烘掉k单位水. 每件衣服没分钟能够自己主动蒸发掉一单位水, 用烘干 ...

  5. POJ 3104 Drying(二分答案)

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

  6. poj 3104 Drying(二分查找)

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

  7. POJ 3104 Drying(二分

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

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

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

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

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

  10. poj 3104 dring 二分

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

随机推荐

  1. iosOC可变数组选择,冒泡排序

    #pragma mark 可变数组的排序 NSMutableArray * array = [NSMutableArray arrayWithObjects: @"1",@&quo ...

  2. .net core 时间戳转换

    /// <summary> /// 时间戳和日期的转化 /// </summary> public class DateTimeUtility { /// <summar ...

  3. .NET下,关于文件夹权限设置的小细节

    InheritanceFlags 指定哪些接受权限继承 InheritanceFlags.ContainerInherit 下级文件夹要继承权限. InheritanceFlags.None 下级文件 ...

  4. android抓日志

    1. adb logcat -c 清楚以前的日志 adb logcat -s 过滤 adb logcat -s *:E adb logcat -v 指定输出的格式 adb logcat -v brie ...

  5. Linux自动修改IP脚本(手动编写)

    #!/bin/bashnetmask=255.255.255.0IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth0GM_PATH=/etc/syscon ...

  6. 深入浅出requireJS-1

    我们都知道,虽然我们可以通过原型和继承来使javascript面向对象.但是,当js代码和逻辑过多时,代码的维护和扩展会变的很不方便.这时,nodejs做的非常好,但是在浏览器端模块化的js编程一直都 ...

  7. http?https?相对协议?

    1 1 1 将CDN 上所有链接的协议默认设置为“相对协议”,也就是链接以 // 开头,前面去掉了 http: 或 https: 字样, 这样做的好处是浏览器能够根据你的网站所采用的协议来自动加载 C ...

  8. 读入一行字符给string类型

    小技巧 string ss: getline(cin,ss):

  9. 转载-SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart

    [原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart 摘要: 作为信息化先驱的产品SharePoint 2010竟然对GIS相关技术支持如此有 ...

  10. Git add和commit步骤分析

    修改后或者添加新的文件,执行add命令后,首先它会先存入本地库的暂存区, add可以上传很多个文件,然后执行commit命令后,都会被提交到默认的分支 Master分支上.只有文件更改和文件新建,都可 ...