*17岁天才铁驭边境顶尖猎杀者* • 1年前
const int N = 666666; 声明一个常量表示数组的大小。
int n, a[N]; 声明整数变量 n 和数组a,存储输入的数据。
int main() 主函数。
cin >> n; 输入 n。
for (int i = 0; i < n; i++) cin >> a[i]; 输入数组 a中的 n 个元素。
int l = 1, r = 1e9; 定义初始的二分答案区间 [1,10^9],l 表示左端点,r 表示右端点。
while (l < r) 在二分答案的区间上不断缩小区间,直到 l 和 r 相等为止。
int mid = (l + r) >> 1; 计算当前的二分答案 mid(等价于 (l+r)/2)。
if (check(mid)) r = mid; 如果 mid 可行,将右端点更新为 mid,并继续向左二分。
else l = mid + 1; 如果 mid 不可行,将左端点更新为 mid+1,并继续向右二分。
cout << l << endl; 输出最小的正整数 x
评论:
请先登录,才能进行评论