AcWing 730. 机器人跳跃问题
原题链接
中等
作者:
戾儿
,
2021-03-31 20:47:06
,
所有人可见
,
阅读 255
(二分)
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=100010;
int a[N],b[N],h[N];
bool check(int mid)
{
for(int i=0;i<n;i++)
{
mid=2*mid-h[i];//对于每一高度 都是e+e-h[i] 对于所有e 满足单调性所以可以使用二分
if(mid>1e5) return true;//mid可能会溢出!!
if(mid<0) return false;
}
return true;
}
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>h[i];
int l=0,r=1e7;
while(l<r)
{
int mid=r+l>>1;
if(check(mid)) r=mid;
else l=mid+1;
}
cout<<r<<endl;
return 0;
}