POJ 3104 Drying (二分+精度)
题目链接: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 (二分+精度)的更多相关文章
- POJ 3104 Drying(二分答案)
题目链接:http://poj.org/problem?id=3104 ...
- POJ 3104 Drying 二分
http://poj.org/problem?id=3104 题目大意: 有n件衣服,每件有ai的水,自然风干每分钟少1,而烘干每分钟少k.求所有弄干的最短时间. 思路: 注意烘干时候没有自然风干. ...
- POJ 3104 Drying [二分 有坑点 好题]
传送门 表示又是神题一道 Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9327 Accepted: 23 ...
- POJ 3104 Drying(二分答案)
[题目链接] http://poj.org/problem?id=3104 [题目大意] 给出n件需要干燥的衣服,烘干机能够每秒干燥k水分, 不在烘干的衣服本身每秒能干燥1水分 求出最少需要干燥的时间 ...
- poj 3104 Drying(二分查找)
题目链接:http://poj.org/problem?id=3104 Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissio ...
- POJ 3104 Drying(二分
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22163 Accepted: 5611 Descripti ...
- POJ 3104 Drying (经典)【二分答案】
<题目链接> 题目大意: 有一些衣服,每件衣服有一定水量,有一个烘干机,每次可以烘一件衣服,每分钟可以烘掉k滴水.每件衣服没分钟可以自动蒸发掉一滴水,用烘干机烘衣服时不蒸发.问最少需要多少 ...
- poj 3104 Drying(二分搜索之最大化最小值)
Description It is very hard to wash and especially to dry clothes in winter. But Jane is a very smar ...
- poj 3104 dring 二分
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7684 Accepted: 1967 Descriptio ...
随机推荐
- 使用github中py12306抢票系得
首先需要安装最新的python:安装步骤见:https://www.cnblogs.com/weven/p/7252917.html 其次下载python源码: 链接:https://pan.baid ...
- zzuli 1905 小火山的跳子游戏
Description 小火山和火山火山在一块玩跳子游戏.规则如下: 1:跳子的起始位置为0,棋盘大小从1到N 2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k 3:跳 ...
- 杭电 1856 More is better (并查集求最大集合)
Description Mr Wang wants some boys to help him with a project. Because the project is rather comple ...
- 【51nod 1092】 回文字符串(区间DP)
回文串是指aba.abba.cccbccc.aaaa这种左右对称的字符串.每个字符串都可以通过向中间添加一些字符,使之变为回文字符串. 例如:abbc 添加2个字符可以变为 acbbca,也可以添加3 ...
- 关于构造函数什么值传递给他的实例,只有this和prototype
var a= function (){var bb = 12; this.aa ="xxx"}; a.aa="www"; a.prototype.cc=&quo ...
- NLS_LANG在客户端不能确定,字符集转变将造成不可预期的后果
原因:1,没有客服端配置字符集2,客户端字符集跟服务端字符集不一致 解决:1,打开plsql 帮助-支持信息看看uls_lang是否设置 2,查看服务器端字符集 Select *from V$NLS_ ...
- Python列表的切片操作
在Python列表中分片是一个很重要的操作,有以下几个注意的点: 切片时不包含最后一位,如下例子中,要取最后一位,从0开始算应该是到7就可以取,但是需要8才能取 2. 默认取值步长为1,即每 ...
- 【贪心+二分】codeforces C. Sagheer and Nubian Market
http://codeforces.com/contest/812/problem/C [题意] 如何花最少的钱买最多的纪念品?首要满足纪念品尽可能多,纪念品数量一样花钱要最少,输出纪念品数量以及最少 ...
- 最大和(codevs 1648)
题目描述 Description N个数围成一圈,要求从中选择若干个连续的数(注意每个数最多只能选一次)加起来,问能形成的最大的和. 输入描述 Input Description 第一行输入N,表示数 ...
- 售货员的难题(codevs 2596)
题目描述 Description 某乡有n个村庄(1<n<=15),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0<s<1000)是已知的,且A村到B村与B村到A村 ...