1 条题解

  • 0
    @ 2104-6-18 16:17:08

    【例73.1】 找球号

    解题思路

    将球号排序,对每个查询使用binary_search判断是否存在。允许重复编号,无需删除重复也能正确查找。

    正确性说明

    依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。

    易错点

    m可以为0,空数组查询全部NO。

    复杂度

    时间O(m log m+n log(m+1)),空间O(m)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int m, n;
        cin >> m >> n;
        vector<long long> a(m);
        for (auto &x : a)
            cin >> x;
        sort(a.begin(), a.end());
        while (n--) {
            long long k;
            cin >> k;
            cout << (binary_search(a.begin(), a.end(), k) ? "YES" : "NO") << "\n";
        }
        return 0;
    }
    

    信息

    ID
    477
    时间
    3000ms
    内存
    128MiB
    难度
    普及−
    标签
    递交数
    0
    已通过
    0
    上传者