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

      

  • 相关阅读:
    [Linux] git send-email的使用
    Linux 下 grep 命令常用方法简介
    Scikit-learn的kmeans聚类
    python 基础知识
    Python
    xgboost 特征选择,筛选特征的正要性
    阿里菜鸟-算法(一面)
    基于Ranking-CNN的年龄识别(CVPR_2017)
    基于多输出有序回归的年龄识别(CVPR_2016)
    在caffe中用训练好的 caffemodel 来分类新的图片所遇到的问题
  • 原文地址:https://www.cnblogs.com/zlrrrr/p/9992023.html
Copyright © 2011-2022 走看看