poj 3104 Drying (二分搜索答案)
来源:互联网 发布:excel数据如何恢复 编辑:程序博客网 时间:2024/05/01 00:11
题目:http://poj.org/problem?id=3104
思路:二分一个答案,然后判断可行性,注意这题整形用long long , 另外算中值的时候:
mid = lhs+ (rhs-lhs)>>1 这种会超时,如果改成 mid= (lhs+rhs)>>1就不超时了,想不通,
按理说第一种会避免中间值溢出,同样是位操作,怎么第一种会超时呢?有大神路过,求指教:
代码:
#include<iostream>#include<string>#include<cstdlib>#include<cstdio>#include<cmath>using namespace std;const int MAXN=100005;long long N,K,a[MAXN];bool can(long long mid) {long long sum=0;for(int i=0;i<N;i++){if(a[i]<=mid) continue;long long left=a[i]-mid+K-2;sum+= left/(K-1);}if(sum<=mid) return 1;else return 0;}int main(){while(cin>>N){long long lhs=0,rhs=0;for(int i=0;i<N;i++){scanf("%d",&a[i]);rhs=max(rhs,a[i]); //shang届 }cin>>K;if(K==1){cout<<rhs<<endl;continue; }while(lhs<rhs){long long mid=(rhs+lhs)>>1;if(can(mid))rhs=mid;else lhs=mid+1;}cout<<lhs<<endl; }return 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【二分】
- java与数据库MySQL的连接
- hdu2089 不要62 数位dp
- 学生管理系统
- 黑马程序员_<<线程的一般方法>>
- hadoop配置与问题
- poj 3104 Drying (二分搜索答案)
- 一步步学算法(算法题解)---5
- 页面置换算法
- ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found
- MFC相关函数介绍
- 链表现的栈
- 一个骰子,6面,1个面是 1, 2个面是2, 3个面是3,问平均掷多少次能使1、2、3都至少出现一次。
- Extjs treeGrid分页实例
- 找出数组中出现奇数次的元素