#include <iostream>#include <algorithm>using namespace std;const int N = 100005;int n;int a[N], b[N];bool check(int mid){ for (int i = 0; i < n; i ++ ) if (a[i] + b[n - 1 - i] > mid) return false; return true;}int main(){ cin >> n; for (int i = 0; i < n; i ++ ) cin >> a[i] >> b[i]; sort(a, a + n); sort(b, b + n); int l = 0, r = 200; while (l < r) { int mid = l + r >> 1; if (check(mid)) r = mid; else l = mid + 1; } cout << r << endl; return 0;}
时间: 2024-04-07 09:32:00 浏览: 125
使用include <iostream>时一定要加using namespace std
这段代码是一个求解最小值的二分答案模板,其顺序如下:
1. 引入头文件 iostream 和 algorithm。
2. 定义常量 N 为 100005,并定义变量 n。
3. 定义数组 a 和 b,其大小为 N。
4. 定义布尔函数 check,其参数为 mid。
5. 在 check 函数中,使用循环遍历数组 a 和数组 b,如果发现 a[i] + b[n - 1 - i] 大于 mid,则返回 false。
6. 如果 check 函数返回 true,则返回 true;否则返回 false。
7. 在主函数中,首先输入 n 和数组 a 和数组 b。
8. 对数组 a 和数组 b 进行排序。
9. 定义变量 l 为 0,r 为 200。
10. 在 while 循环中,计算 mid 的值。
11. 如果 check 函数返回 true,则将 mid 赋值给 r。
12. 否则将 mid + 1 赋值给 l。
13. 最后输出 r 的值。
14. 整个程序结束,返回 0。
阅读全文