zoukankan      html  css  js  c++  java
  • 二分 by zzt

    #include <bits/stdc++.h>
    using namespace std;
    
    /*
     Problem description:
     There is an array A, the length of array A is N.
     You need to perform Q queries.
     Each query, you get an integer X, and you need to find the smallest integer Y in array A, meet Y > X.
     If there exist such integer, please print the value of the integer.
     Otherwise, please print "There is no number bigger than X".
     
     If you finish the above problem, please try the following problem:
     1. Find the biggest integer Y in array A, Y < X.
     2. Validate if there is a integer Y in array A, meet Y equals to X.
     
     最后写这些:(key 就是上文中每次输入的 X)
     1. 对于不下降序列 a,求最小的 i,使得 a[i] = key
     2. 对于不下降序列 a,求最大的 i,使得 a[i] = key
     3. 对于不下降序列 a,求最小的 i,使得 a[i] > key
     4. 对于不下降序列 a,求最大的 i,使得 a[i] < key
     5. 对于不上升序列 a,求最小的 i,使得 a[i] = key
     6. 对于不上升序列 a,求最大的 i,使得 a[i] = key
     7. 对于不上升序列 a,求最小的 i,使得 a[i] < key
     8. 对于不上升序列 a,求最大的 i,使得 a[i] > key
     
     */
    
    const int maxn = 1e5 + 10;
    int n, q;
    long long a[maxn];
    
    int main() {
      scanf("%d", &n);
      for(int i = 1; i <= n; i ++) {
        scanf("%lld", &a[i]);
      }
      sort(a + 1, a + 1 + n);
      
      scanf("%d", &q);
      while(q --) {
        long long x;
        scanf("%lld", &x);
        int L = 1, R = n, pos = -1;
        while(L <= R) {
          int mid = (L + R) / 2;
          if(a[mid] <= x) L = mid + 1;
          else R = mid - 1, pos = mid;
        }
        if(pos == -1) printf("There is no number bigger than %lld", x);
        else printf("%lld
    ", a[pos]);
      }
      
      return 0;
    }
    

      

  • 相关阅读:
    暑期大作战第三天
    暑期大作战 第二天
    暑假作战第一天
    JDK源码学习笔记——Object
    JVM堆 栈 方法区详解
    JVM入门——JVM内存结构
    Spring Boot 1.Hello World
    Flutter Widget不刷新问题
    Flutter 根界面退出的时候(即是应用退出),不会触发deactivate/dispose方法 / 监听返回按钮
    Android Studio 3.3.1 代码提示不区分大小写
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9992023.html
Copyright © 2011-2022 走看看