zoukankan      html  css  js  c++  java
  • 二分法的样例 题解

    题目描述:

     

    给定N个整数,M个问题

    对于每个问题,你需要回答数字A是否在N个数字里出现过

    输入:

     

    第一行是两个整数N和M ( 0 < N , M < 100000)

    接下来的一行,共有N个整数

    接下来的M行,每行有1个整数A

    输出:

     

    共M行,

    对于每个询问,若A出现过,则输出YES

    否则 输出NO

    样例输入:

    5 2
    1 2 3 4 5
    5

    样例输出:

    YES
    NO

    C语言代码:

    #include <stdio.h>
    #include <stdlib.h>
    #define N 1000001

    int num[N];
    int n, m;

    void Read();

    int Mycmp(const void *a, const void *b);

    int BinSearch(int x);

    int main()
    {
    int x;
    scanf("%d %d", &n, &m);
    Read();
    qsort(num, n, sizeof(int), Mycmp);
    while (m--)
    {
    scanf("%d", &x);
    if (BinSearch(x) == -1)
    {
    puts("NO");
    }
    else
    {
    puts("YES");
    }
    }
    return 0;
    }

    void Read()
    {
    int i;
    for (i=0; i<n; ++i)
    {
    scanf("%d", &num[i]);
    }
    return;
    }

    int Mycmp(const void *a, const void *b)
    {
    return *(int *)a - *(int *)b;
    }

    int BinSearch(int x)
    {
    int high, low, mid;
    high = n - 1;
    low = 0;
    while (low <= high)
    {
    mid = (low + high) / 2;
    if (num[mid] > x)
    {
    high = mid - 1;
    }
    else if (num[mid] < x)
    {
    low = mid + 1;
    }
    else
    {
    return 1;
    }
    }
    return -1;
    }

  • 相关阅读:
    贪婪大陆
    色板游戏
    11/29 NOIP 模拟赛
    USACO4.4 重叠的图像 Frame Up
    CSP2020 题解
    NOIP前板子复习
    关于我
    【洛谷】【搜索+字符串】
    【洛谷】【动态规划/01背包】P2925 [USACO08DEC]干草出售Hay For Sale
    【洛谷】【二分查找】P1102 A−B数对
  • 原文地址:https://www.cnblogs.com/lxl0928/p/3864323.html
Copyright © 2011-2022 走看看