poj3104(二分)
2017-04-16 17:00
204 查看
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; typedef long long ll; ll n, k; ll a[200000]; bool dix(int mid)//枚举的是自然风干时间 { ll time = 0; if(k == 1) return true; for(int i = 0; i < n; i++){ if(a[i] > mid) //枚举自然风干时间 time += (a[i] - mid + k - 2)/ (k - 1);// 设这机洗时间与自然风干时间两段时间分别是x1和x2,那么有mid=x1+x2,ai<=k*x1+x2则x1 >= (a[i]-x2)/k } if(time > mid) return true;//所以但凡机洗总时间大于自然风干说明自然风干时间小了则左区间要变大 return false;//若机器洗时间小于自然风干时间说明自然风干时间大了有区间要变小 } int main() { while(scanf("%lld", &n) != EOF){ ll maxn = 0; for(int i = 0; i < n; i++) { scanf("%lld", &a[i]); if(maxn < a[i]) maxn = a[i]; } scanf("%lld", &k); ll mid, left = 0, right = maxn; while(left < right - 1){ mid = (left + right)/2; if(dix(mid)){ left = mid; } else right = mid; } printf("%lld\n", right);//输出最小 } return 0; }
相关文章推荐
- POJ3104_Drying_二分
- POJ3104(二分搜索)
- [二分]poj3104 Drying
- POJ3104 Drying (二分的力量2)
- poj3104(二分判断可行性)
- 二分搜索--poj3104
- POJ3104:Drying(二分)
- POJ3104 二分
- POJ3104 Drying [二分]
- POJ3104 Drying 二分搜索
- POJ3104 Drying(二分答案)
- CSU-ACM2017暑假集训2-二分搜索 poj3104-drying
- POj3104 Drying(二分)
- POJ3104_DRYING_二分
- POJ3104_Pie_二分
- POJ3104 Drying [二分]
- poj3104 Drying(二分)
- poj3104 drying( 二分,最小化最大值)
- poj3104 二分
- [WIKIOI1183]泥泞的道路[二分答案+SPFA]