- P10's solution
-
题解 P10
- @ 2025-11-2 13:13:01
自适应交互库中的 函数。该函数的核心思想是维护可能的 值范围,并通过选择能使剩余搜索空间最大的回答,确保二分查找的实际查找次数不小于理论最小值。
AC code:
#include <bits/stdc++.h>
using namespace std;
int respond(int n, int q, int x, vector<pair<int, int>> p) {
int left = 1;
int right = n;
for (const auto& [u, v] : p) {
if (v == 0) {
left = max(left, u + 1);
} else if (v == 2) {
right = min(right, u - 1);
}
}
int range0 = 0, range1 = 0, range2 = 0;
if (x < right) {
range0 = right - x;
}
if (left <= x && x <= right) {
range1 = 1;
}
if (x > left) {
range2 = x - left;
}
if (left == right && x == left) {
return 1;
}
if (range0 > range2) {
return 0;
} else {
return 2;
}
}