初看题是看不出要用二分的,但是题目要求找出符合条件最小的E,这个就是符合二分的条件,最值,单调性,因为所有大于E的值都可成立。
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static PrintWriter pw = new PrintWriter(System.out);
static int N = 100010, n;
static int a[] = new int[N];
public static void main(String[] args) throws Exception {
n = Integer.parseInt(br.readLine());
String s[] = br.readLine().split(" ");
for (int i = 1; i <= n; i++) a[i] = Integer.parseInt(s[i - 1]);
int l = 0, r = N;
while (l < r) {
int mid = l + r >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
pw.println(r);
pw.flush();
pw.close();
br.close();
}
public static boolean check(int e) {
for (int i = 1; i <= n; i++) {
e = e * 2 - a[i];
if (e > N) return true;
if (e < 0) return false;
}
return true;
}
}
来源:CSDN
作者:SoKeeGanCN
链接:https://blog.csdn.net/qq_43515011/article/details/104135939