POj3104 Drying(二分)
Drying
Time Limit: 2000MS Memory Limit: 65536K
Description
It is very hard to wash and especially to dry clothes in winter. But Jane is a very smart girl. She is not afraid of this boring process. Jane has decided to use a radiator to make drying faster. But the radiator is small, so it can hold only one thing at a time.
Jane wants to perform drying in the minimal possible time. She asked you to write a program that will calculate the minimal time for a given set of clothes.
There are n clothes Jane has just washed. Each of them took ai water during washing. Every minute the amount of water contained in each thing decreases by one (of course, only if the thing is not completely dry yet). When amount of water contained becomes zero the cloth becomes dry and is ready to be packed.
Every minute Jane can select one thing to dry on the radiator. The radiator is very hot, so the amount of water in this thing decreases by k this minute (but not less than zero — if the thing contains less than k water, the resulting amount of water will be zero).
The task is to minimize the total time of drying by means of using the radiator effectively. The drying process ends when all the clothes are dry.
Input
The first line contains a single integer n (1 ≤ n ≤ 100 000). The second line contains ai separated by spaces (1 ≤ ai ≤ 109). The third line contains k (1 ≤ k ≤ 109).
Output
Output a single integer — the minimal possible number of minutes required to dry all clothes.
Sample Input
sample input #1
3
2 3 9
5 sample input #2
3
2 3 6
5
Sample Output
sample output #1
3 sample output #2
2
::二分时间,找满足题意的结果
1: //本代码用cin,cout输入输出时间慢,改为scanf,printf会快很多
2: #include <iostream>
3: #include <algorithm>
4: #include <cstdio>
5: using namespace std;
6: const int maxn=100100;
7: int a[maxn];
8:
9: int is_ok(int m,int k,int n)//时间为m时是否能够把衣服弄干
10: {
11: int sum=0;
12: for(int i=0;i<n;i++)
13: { //如果含水量小于等于m,自然晾干就好
14: if(a[i]>m)//当含水量大于m
15: {
16: sum+=(a[i]-m)/k;//
17: if((a[i]-m)%k)
18: sum++;
19: }
20: if(sum>m) return 0;
21: }
22: return 1;
23: }
24:
25: int run()
26: {
27: int n,i,k;
28: while(cin>>n)
29: {
30: int big=0;
31: for(i=0;i<n;i++)
32: {
33: cin>>a[i];
34: if(a[i]>big) big=a[i];
35: }
36: cin>>k;
37: if(k==1)
38: {
39: cout<<big<<endl;
40: continue;
41: }
42: int l=0,r=big,ans=big;
43:
44: while(l<=r)
45: {
46: int m=(l+r)>>1;
47: if(is_ok(m,k-1,n)) //k-1是为了处理当含水a[i]大于m时,
48: r=m-1,ans=m; //可以处理为a[i]-m;(m点水相当于自然晾干)
49: else
50: l=m+1;
51: }
52: cout<<ans<<endl;
53: }
54: return 0;
55: }
56:
57: int main()
58: {
59: ios::sync_with_stdio(0);
60: return run();
61: }
POj3104 Drying(二分)的更多相关文章
- POJ3104 Drying(二分查找)
POJ3104 Drying 这个题由于题目数据比较大(1 ≤ ai ≤ 109),采用贪心的话肯定会超时,自然就会想到用二分. 设C(x)为true时表示所用时间为X时,可以把所有的衣服都烘干或者自 ...
- POJ3104 Drying —— 二分
题目链接:http://poj.org/problem?id=3104 Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- POj-3104 Drying 二分+贪心
题目大意:有n件湿的衣服,每件衣服都有相应的湿度,每分钟每件衣服的湿度减1(除了在烘干机里的衣服),现在有一个烘干机,烘干机一分钟可以让一件衣服的湿度降低k,问至少要花多少分钟才能使每件衣服的湿度为0 ...
- poj3104 Drying(二分最大化最小值 好题)
https://vjudge.net/problem/POJ-3104 一开始思路不对,一直在想怎么贪心,或者套优先队列.. 其实是用二分法.感觉二分法求最值很常用啊,稍微有点思路的二分就是先推出公式 ...
- Drying poj3104(二分)
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7916 Accepted: 2006 Descriptio ...
- POJ 3104 Drying(二分答案)
题目链接:http://poj.org/problem?id=3104 ...
- POJ3104 Drying 2017-05-09 23:33 41人阅读 评论(0) 收藏
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15604 Accepted: 3976 Descripti ...
- POJ3104 Drying
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13703 Accepted: 3527 Description It i ...
- POJ 3104 Drying [二分 有坑点 好题]
传送门 表示又是神题一道 Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9327 Accepted: 23 ...
随机推荐
- access数据库多个left join示例
代码: /// <summary> /// 分类检索 查询selectname /// </summary> public static DataTable GetSelect ...
- asp.net mvc中包含webapi时,token失效产生302的解决方案
public void ConfigureAuth(IAppBuilder app) { app.UseCookieAuthentication(new CookieAuthenticationOpt ...
- 基于FreeBSD 64位内核的kFreeBSD无法在Virtualbox下安装
ArchBSD同上 感谢大A(豆瓣)的投稿 :)
- Java Web Cookie
一.什么是cookie? 1.Cookie能使站点跟踪特定访问者的访问次数.最后访问时间和访问者进入站点的路径 2.Cookie能告诉在线广告商广告被点击的次数,从而可以更精确的投放广告 3.Cook ...
- jquery function Optional Arguments
1.javascript 选项散列对象 function Test(p1,p2,p3,p4,p5){ //do something } call: 参数可选 Test({ p1:value1, p2: ...
- javascript 之拼接html字符串
// var one = {"id":1, "leasetime":2, "ney":0,"myhuifangshi": ...
- vundle按照YouComplete
https://github.com/VundleVim/Vundle.vim http://www.jianshu.com/p/d908ce81017a?nomobile=yes http://ww ...
- Android Java 自定义异常
1.自定义异常 package com; public class ZeroException extends Exception { private static final long serial ...
- 多种cell混合使用
有时候我们会碰到一个tableView上有多种cell,这个时候就需要定义多种cell,根据条件判断,当满足某个条件的时候选择某个cell 先看plist文件: Person.h #import &l ...
- IOS 简单动画 首尾式动画
首尾式动画 首尾式动画即通过实现控件由初始状态到结束状态的过程.(主要表现在控件的Frame 透明度 ) // // ViewController.m // CX 简单动画 // // Created ...