• 二分--LIGHTOJ 1088查找区间(水题)


    #include <iostream>
    #include <cstdio>
    #include <cmath>
    using namespace std;
    const int maxN = 100005;
    int a[maxN];
    int t, tt;
    int n, q, x, y;
    
    int Bsearch_lower_bound(int x)
    {
        int l = 0, r = n - 1, mid = 0;
        while (l <= r)
        {
            mid = (l + r) >> 1;
            if (a[mid] < x) l = mid + 1;
            else r = mid - 1;
        }
        return l;
    }
    
    int Bsearch_upper_bound(int x)
    {
        int l = 0, r = n - 1, mid = 0;
        while (l <= r)
        {
            mid = (l + r) >> 1;
            if (a[mid] <= x) l = mid + 1;
            else r = mid - 1;
        }
        return l;
    }
    
    void solve()
    {
        scanf("%d%d", &n, &q);
        printf("Case %d:
    ", ++tt);
        for (int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        for (int i = 0; i < q; i++)
        {
            scanf("%d%d", &x, &y);
            int l = Bsearch_lower_bound(x);
            int r = Bsearch_upper_bound(y);
            printf("%d
    ", r - l);
        }
    }
    
    int main()
    {
        scanf("%d", &t);
        while (t--) solve();
        return 0;
    }
    

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    today lazy . tomorrow die .
  • 相关阅读:
    人人网笔试题
    创新工厂笔试题
    奇异广告面试
    微策略笔试题
    多玩笔试题
    有道笔试+面试
    巨人网络开发工程师试题
    Hulu笔试题
    百度笔试题
    兰亭集势笔试题
  • 原文地址:https://www.cnblogs.com/france/p/4808684.html
Copyright © 2020-2023  润新知