[二分法]求解递增序列中与x最接近元素问题
题目描述
在一个非降序列序列中与给定值 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最接近元素问题的更多相关文章
- 【python cookbook】【数据结构与算法】12.找出序列中出现次数最多的元素
问题:找出一个元素序列中出现次数最多的元素是什么 解决方案:collections模块中的Counter类正是为此类问题所设计的.它的一个非常方便的most_common()方法直接告诉你答案. # ...
- python之Counter类:计算序列中出现次数最多的元素
Counter类:计算序列中出现次数最多的元素 from collections import Counter c = Counter('abcdefaddffccef') print('完整的Cou ...
- [PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...
- ch1_5_2求无序序列中第k小的元素
import java.util.Arrays; import java.util.PriorityQueue; public class ch1_5_2求无序序列中第k小的元素 { public s ...
- 在线性级别时间内找出无序序列中的第k个元素
在一个无序序列中找出第k个元素,对于k很小或者很大时可以采取特殊的方法,比如用堆排序来实现 .但是对于与序列长度N成正比的k来说,就不是一件容易的事了,可能最容易想到的就是先将无序序列排序再遍历即可找 ...
- 【python cookbook】找出序列中出现次数最多的元素
问题 <Python Cookbook>中有这么一个问题,给定一个序列,找出该序列出现次数最多的元素.例如: words = [ 'look', 'into', 'my', 'eyes', ...
- C++练习 | 在递增序列中查找最后一个小于等于指定数的元素
#include <iostream> using namespace std; int mid,l0; int solve(int a1[],int l,int r,int x) { & ...
- LeetCode 674. Longest Continuous Increasing Subsequence最长连续递增序列 (C++/Java)
题目: Given an unsorted array of integers, find the length of longest continuous increasing subsequenc ...
- 【python cookbook】【数据结构与算法】10.从序列中移除重复项且保持元素间顺序不变
问题:从序列中移除重复的元素,但仍然保持剩下的元素顺序不变 解决方案: 1.如果序列中的值时可哈希(hashable)的,可以通过使用集合和生成器解决.
- 算法竞赛进阶指南--在单调递增序列a中查找小于等于x的数中最大的一个(即x或x的前驱)
在单调递增序列a中查找<=x的数中最大的一个(即x或x的前驱) while (l < r) { int mid = (l + r + 1) / 2; if (a[mid] <= x) ...
随机推荐
- lua随写
--local util={}--function util.Split(str, sep)-- local sep, fields = sep or ":", {}-- loca ...
- 解释Spring框架中bean的生命周期
一.Bean生命周期的流程图 二.spring的生命周期 spring生命周期中的阶段,包括初始化.使用.销毁. 1.初始化阶段 1)调用bean的构造函数,创建实例: 2)进行参数依赖注入: 3)若 ...
- Composer的常用命令和关于在哪儿查看composer可用包列表的问题
1.安装: composer的安装就不用多说了,官网下载,一路next 中途貌似要让选择php.exe的所在目录. 2.常用命令: 1).配置/取消国内镜像仓库 /*配置国内镜像*/ composer ...
- Full GC 频率优化实战
作者:vivo 互联网服务器团队- Li Gang 本文介绍了游戏业务使用MAT和GC日志等工具对 Full GC频率进行优化的过程. 一.背景 游戏业务面对用户端的某个工程,每天Full GC频率达 ...
- Linux设置每晚定时备份Oracle数据表
先新建目录 该路径:/home/oracle/backup 该名称:DATA_PATH shell脚本 export ORACLE_BASE=/home/oracle/app export ORACL ...
- K8s新手系列之K8s中的资源
K8s中资源的概念 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes. kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓 ...
- CV中常用Backbone-2:ConvNeXt模型详解及其代码
之前介绍了CV常用Backbon: CV中常用Backbone-1:Resnet/Unet/Vit系列/多模态系列等)以及代码 这里介绍新的一个Backbone:ConvNeXt,主要来自两篇比较老的 ...
- Jmeter+Ant+Jenkins接口自动化测试(三)_Ant配置及Jenkins持续集成
前言: 本来想多分几部分,但是都是抽时间总结的,也就不润色了,直接三板斧,结束. 特别提示: 知识是用来分享的,但是也要尊重作者的权益,转载请注明出处,未经本人允许不可用于商业目的. Ant构建文件配 ...
- 小程序自定义组件 - 插槽slot
和 vue 的 slot 几乎是一模一样的. 这个学小程序就相当于复习了一把 vue, 还是很值的. 我们之前说组件是页面的一部分, 目的是为了代码复用, 作为组件封装者, 有时候需要设计一些让用户能 ...
- Typora,PicGo,Github搭建个人图床
前言 个人非常喜欢用md来撰写博文,一般是在Jypyter notebook中连文字带代码的编辑好,然后下载其md文件,然后直接复制粘贴到博客中,非常方便.但如果要插入图片的话,本地图片无法直接被博客 ...