• Light oj 1030 二分查找


    1088 - Points in Segments

    Time Limit: 2 second(s) Memory Limit: 32 MB

    Given n points (1 dimensional) and q segments, you have to find the number of points that lie in each of the segments. A point pi will lie in a segment A B if A ≤ pi ≤ B.

    For example if the points are 1, 4, 6, 8, 10. And the segment is 0 to 5. Then there are 2 points that lie in the segment.

    Input

    Input starts with an integer T (≤ 5), denoting the number of test cases.

    Each case starts with a line containing two integers n (1 ≤ n ≤ 105) and q (1 ≤ q ≤ 50000). The next line contains n space separated integers denoting the points in ascending order. All the integers are distinct and each of them range in [0, 108].

    Each of the next q lines contains two integers Ak Bk (0 ≤ Ak ≤ Bk ≤ 108) denoting a segment.

    Output

    For each case, print the case number in a single line. Then for each segment, print the number of points that lie in that segment.

    Sample Input

    Output for Sample Input

    1

    5 3

    1 4 6 8 10

    0 5

    6 10

    7 100000

    Case 1:

    2

    3

    2

    Note

    Dataset is huge, use faster I/O methods.

    题目大意:数据量非常大,直接搞肯定就搞死了,明显二分查找,调用lower__bound和upper__bound就可以。

    输出注意要用标准输入输出,否则超时gg.

    代码:

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <stack>
    #define mem(a) memset(a,0,sizeof(a))
    using namespace std;
    const int maxn=100000+100;
    int a[maxn];
    int main()
    {
        int kase=0;
        int T;
        int n,p;
        scanf("%d",&T);
        while(T--)
        {
            scanf("%d%d",&n,&p);
            for(int i=0;i<n;i++)
                scanf("%d",&a[i]);
          printf("Case %d: ",++kase);
            while(p--)
            {
                int c,d;
                scanf("%d%d",&c,&d);
                int t1=upper_bound(a,a+n,d)-a;
                int t2=lower_bound(a,a+n,c)-a;
                printf("%d ",t1-t2);
            }
        }
        return 0;
    }

  • 相关阅读:
    在 ServiceModel 客户端配置部分中,找不到引用协定
    nopi 导出excel 带图片
    c# async await 理解 结合并行处理
    从数据库更新模型时出现System.ArgumentException
    C# HTTP请求 异步(async await)
    C# HTTP请求
    SQL列转行
    详解C# 匿名对象(匿名类型)、var、动态类型 dynamic
    JavaScript (function (){}()) 与(function(){})()
    记ssh错误排查-ansible
  • 原文地址:https://www.cnblogs.com/xuejianye/p/5487494.html
Copyright © 2020-2023  润新知