poj 3104 Drying 二分答案
来源:互联网 发布:json key value 数组 编辑:程序博客网 时间:2024/05/18 03:08
时空隧道
题目大意:
有n件衣服,每件衣服有一个湿度值a[i],每个单位时间每件衣服可以自然蒸发一点湿度值,现在有一台烘干机,每个单位时间可以使一件衣服减少k点湿度值(烘干期间不会自然蒸发),最少需要多长时间可以使得所有衣服都干掉
分析:
二分答案
为什么这道题要使用二分?
首先这道题是一个最优值问题,也就是最大值最小的问题
其次答案是单调的,满足二分性质
所以此题可以转化为二分答案判断可行性的问题
对于ans,如果a[i]<=ans,那么就让i自然蒸发,否则就要使用ceil(a[i]-ans])/(k-1)时间的烘干机,判断使用烘干机的时间是否满足ans
代码如下:
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#define int long longusing namespace std;const int maxn=100000+5;int n,a[maxn],k,mx=0;inline bool check(int tim){ int cnt=0; for(int i=1;i<=n;i++) if(a[i]>tim) cnt+=(a[i]-tim+k-1)/k; if(cnt>tim) return false; return true;}signed main(void){ scanf("%lld",&n); for(int i=1;i<=n;i++) scanf("%lld",&a[i]),mx=max(mx,a[i]); scanf("%lld",&k); k--; if(k==0){ cout<<mx<<endl; return 0; } int l=0,r=mx,ans; while(l<=r){ int mid=(l+r)>>1; if(check(mid)) ans=mid,r=mid-1; else l=mid+1; } cout<<ans<<endl; return 0;}
by >_< neighthorn
1 0
- POJ 3104 Drying-二分答案
- poj 3104 Drying 二分答案
- POJ 3104 Drying (二分答案)
- poj 3104 Drying (二分搜索答案)
- POJ 3104 Drying 二分
- POJ--3104--Drying【二分】
- POJ 3104 Drying 二分
- poj 3104 Drying (二分)
- POJ 3104 Drying (二分)
- POJ 3104 Drying (二分)
- POJ 3104- Drying-二分
- POJ 3104 Drying(二分)
- POJ - 3104 Drying(二分)
- POJ 3104 Drying【二分】
- POJ 3104 Drying(二分枚举)
- POJ 3104 Drying 二分搜索
- POJ 3104 - Drying(二分搜索)
- POJ 3104 Drying (二分+精度)
- 堆排
- hibernate 多查询or的用法
- 文章标题
- Path Sum II
- iOS开发之原来Runtime的黑魔法这么厉害
- poj 3104 Drying 二分答案
- Convolutional neural networks(CNN) (十一) Convolution and Pooling Exercise
- Vector小记
- MYSQL下载安装配置卸载图文教程
- Windows下用脚本批量重命名文件
- 《Windows核心编程》之“内核对象同步”
- Java四种内部类
- unity 相机平滑跟随游戏角色
- 替换默认mac ctags