题目描述

在一个非降序列序列中与给定值 x 最接近的元素

输入描述

第一行包含一个整数 n,为非降序列长度 (1<=n<=100 000)

第 2 行包含 n 个整数,为非降序列的各个元素, 所有元素的大小均在 0~1 000 000 000 范围内。

第 3 行包含一个整数 m, 为要询问的给定值的个数 (1<=m<=10 000)。接下来 m 行,每行一个整数, 为要询问最接近元素的给定值,所有给定值的大小均在 0~1 000 000 000 范围内。

输出描述

输出共 m 行,每行一个整数,为最接近相应给定值的元素值,并保持输入顺序。若有多个元素值满足条件,输出最小的一个。

输入样例

Copy to Clipboard
3
2 5 8
2
10
5

输出样例

Copy to Clipboard
8
5
//已过OJ

#include <iostream>
using namespace std; int main(){
int i,mid,m,n,ask;
int a[100000];
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i];
}
cin>>m;
for(i=1;i<=m;i++){
cin>>ask;
if(ask<a[1]){
cout<<a[1]<<endl;
continue;
}
if(ask>a[n]){
cout<<a[n]<<endl;
continue;
}
int l=1,r=n;
while(l<r){
mid=(l+r)/2;
if(a[mid]>=ask)r=mid;
else l = mid+1;
}
if(a[l]==ask||(a[l]-ask)<(ask-a[l-1])){
cout<<a[l]<<endl;
}
else{
cout<<a[l-1]<<endl;
} }
return 0;
}

[二分法]求解递增序列中与x最接近元素问题的更多相关文章

  1. 【python cookbook】【数据结构与算法】12.找出序列中出现次数最多的元素

    问题:找出一个元素序列中出现次数最多的元素是什么 解决方案:collections模块中的Counter类正是为此类问题所设计的.它的一个非常方便的most_common()方法直接告诉你答案. # ...

  2. python之Counter类:计算序列中出现次数最多的元素

    Counter类:计算序列中出现次数最多的元素 from collections import Counter c = Counter('abcdefaddffccef') print('完整的Cou ...

  3. [PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法

    问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...

  4. ch1_5_2求无序序列中第k小的元素

    import java.util.Arrays; import java.util.PriorityQueue; public class ch1_5_2求无序序列中第k小的元素 { public s ...

  5. 在线性级别时间内找出无序序列中的第k个元素

    在一个无序序列中找出第k个元素,对于k很小或者很大时可以采取特殊的方法,比如用堆排序来实现 .但是对于与序列长度N成正比的k来说,就不是一件容易的事了,可能最容易想到的就是先将无序序列排序再遍历即可找 ...

  6. 【python cookbook】找出序列中出现次数最多的元素

    问题 <Python Cookbook>中有这么一个问题,给定一个序列,找出该序列出现次数最多的元素.例如: words = [ 'look', 'into', 'my', 'eyes', ...

  7. C++练习 | 在递增序列中查找最后一个小于等于指定数的元素

    #include <iostream> using namespace std; int mid,l0; int solve(int a1[],int l,int r,int x) { & ...

  8. LeetCode 674. Longest Continuous Increasing Subsequence最长连续递增序列 (C++/Java)

    题目: Given an unsorted array of integers, find the length of longest continuous increasing subsequenc ...

  9. 【python cookbook】【数据结构与算法】10.从序列中移除重复项且保持元素间顺序不变

    问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决.

  10. 算法竞赛进阶指南--在单调递增序列a中查找小于等于x的数中最大的一个(即x或x的前驱)

    在单调递增序列a中查找<=x的数中最大的一个(即x或x的前驱) while (l < r) { int mid = (l + r + 1) / 2; if (a[mid] <= x) ...

随机推荐

  1. lua随写

    --local util={}--function util.Split(str, sep)-- local sep, fields = sep or ":", {}-- loca ...

  2. 解释Spring框架中bean的生命周期

    一.Bean生命周期的流程图 二.spring的生命周期 spring生命周期中的阶段,包括初始化.使用.销毁. 1.初始化阶段 1)调用bean的构造函数,创建实例: 2)进行参数依赖注入: 3)若 ...

  3. Composer的常用命令和关于在哪儿查看composer可用包列表的问题

    1.安装: composer的安装就不用多说了,官网下载,一路next 中途貌似要让选择php.exe的所在目录. 2.常用命令: 1).配置/取消国内镜像仓库 /*配置国内镜像*/ composer ...

  4. Full GC 频率优化实战

    作者:vivo 互联网服务器团队- Li Gang 本文介绍了游戏业务使用MAT和GC日志等工具对 Full GC频率进行优化的过程. 一.背景 游戏业务面对用户端的某个工程,每天Full GC频率达 ...

  5. Linux设置每晚定时备份Oracle数据表

    先新建目录 该路径:/home/oracle/backup 该名称:DATA_PATH shell脚本 export ORACLE_BASE=/home/oracle/app export ORACL ...

  6. K8s新手系列之K8s中的资源

    K8s中资源的概念 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes. kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓 ...

  7. CV中常用Backbone-2:ConvNeXt模型详解及其代码

    之前介绍了CV常用Backbon: CV中常用Backbone-1:Resnet/Unet/Vit系列/多模态系列等)以及代码 这里介绍新的一个Backbone:ConvNeXt,主要来自两篇比较老的 ...

  8. Jmeter+Ant+Jenkins接口自动化测试(三)_Ant配置及Jenkins持续集成

    前言: 本来想多分几部分,但是都是抽时间总结的,也就不润色了,直接三板斧,结束. 特别提示: 知识是用来分享的,但是也要尊重作者的权益,转载请注明出处,未经本人允许不可用于商业目的. Ant构建文件配 ...

  9. 小程序自定义组件 - 插槽slot

    和 vue 的 slot 几乎是一模一样的. 这个学小程序就相当于复习了一把 vue, 还是很值的. 我们之前说组件是页面的一部分, 目的是为了代码复用, 作为组件封装者, 有时候需要设计一些让用户能 ...

  10. Typora,PicGo,Github搭建个人图床

    前言 个人非常喜欢用md来撰写博文,一般是在Jypyter notebook中连文字带代码的编辑好,然后下载其md文件,然后直接复制粘贴到博客中,非常方便.但如果要插入图片的话,本地图片无法直接被博客 ...