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

      

  • 相关阅读:
    java设计模式0--设计模式简介
    Eclipse常用快捷键与代码模板
    hadoop文件系统与I/O流
    java学习笔记16--I/O流和文件
    hadoop压缩框架
    hadoop中典型Writable类详解
    java学习笔记15--多线程编程基础2
    redis配置密码的方法
    编写的windows程序,崩溃时产生crash dump文件的办法
    windows程序崩溃生成dump文件
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9992023.html
Copyright © 2011-2022 走看看