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;
    }
    

      

  • 相关阅读:
    Hive的安装和使用
    Redis 慢查询日志
    GO语言-数组
    ZooKeeper-3.3.4集群安装配置
    GO语言-基础语法:循环
    GO语言-基础语法:条件判断
    GO语言-基础语法:变量定义
    nginx限制下载速度
    Centos7下Etcd集群搭建
    浅谈spj
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9992023.html
Copyright © 2011-2022 走看看