1 条题解

  • 2
    @ 2025-1-5 1:11:30

    很明显,每次二分查找都会将当前区间分成两段,因此我们每次只要把评测程序带到较长的那一段去二分查找就可以了。记得特判给出的二分端点不在当前区间内的情况。

    #include <bits/stdc++.h>
    using namespace std;
    int respond(int n, int q, int x, vector<pair<int, int> > p)
    {
    	int z = 0;
    	int l = 0, r = n + 1;
    	for (int i = 1; i <= q; i++)
    	{
    		if(p[i].second == 0) l = max(l, p[i].first);
    		if(p[i].second == 2) r = min(r, p[i].first);
    	}
    	if (x - l < r - x) z = 0;
    	if (x - l > r - x) z = 2;
    	if (x - l == r - x && r - l != 2) z = 0;
    	if (x - l == r - x && r - l == 2) z = 1;
    	return z;
    }
    
    • 1

    Interactive Problem Test 3: A Tough Binary Search

    信息

    ID
    119
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    15
    已通过
    2
    上传者