题目描述

在一个非降序列序列中与给定值 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. Scrcpy使用入门

    1.下载Scrcpy GitHub地址:https://github.com/Genymobile/scrcpy 网盘地址:https://pan.baidu.com/s/1NKosSkQJLbmhz ...

  2. el-table-column动态判断显示性别男女

    <el-table-column label="性别" width="60" align="center" prop="ge ...

  3. cglib 代理类 自己equals自己 返回false

    简单的cglib代理示例 普通的 Java 类 package cglib; public class UserService { public void saveUser(String userna ...

  4. SpringBoot3启动报错 java.lang.ClassNotFoundException: java.text.ListFormat

    问题 在使用SpringBoot3创建web项目的时候日志报错java.lang.ClassNotFoundException: java.text.ListFormat. 具体报错如下: java. ...

  5. 【记录】JS和C++的Base64编码解码(支持中文)

    JS 解决方法来源于知乎新码笔记的文章 function b64Encode(str) { return btoa(unescape(encodeURIComponent(str))); } func ...

  6. 手把手教你使用C#创建一个WebSearchAgent

    PocketFlowSharp介绍 最近我对PocketFlow比较感兴趣,不仅是因为它是一个极简的LLM框架,更加让我觉得很不错的地方在于作者提供了很多方便学习的例子,就算没有LLM应用开发经验,也 ...

  7. vivo官网APP首页端智能业务实践

    作者:vivo 互联网客户端团队- Li Quanlong 本文介绍端智能技术在vivo官网APP的落地实践,通过抽象问题.提出端智能解决方案.方案落地这三大块内容逐步递进地展开端智能技术的应用过程. ...

  8. Win32汇编学习笔记02.RadAsm和联合编译

    https://bpsend.net/thread-151-1-1.html 汇编使用资源 汇编使用资源的方式和C的一样,也是把资源文件 rc 编译成 res 再链接进去,汇编没有自己的资源编辑器,需 ...

  9. WPF 粉笔绘制

    在做白板书写的时候,会有各种笔的绘制,比如 书写笔.马克笔.演示笔等等.粉笔的功能需求也是很有必要的. 上网搜了一圈,几乎没有绘制粉笔的. 有的是毛笔.楷体等绘制的如下博客: wpf inkcanva ...

  10. 基于FPGA的超声波雷达感应预警系统 全过程记录

    FPGA系统开发 综合实验记录 实验时间节点与想法记录 2023.4.24 新建本文档.目前决定有以下两个方案,要根据学校发的器件和自己的水平和后面时间决定. 课设想法 具体情况 基于FPGA的高速运 ...