问题链接:CCF NOI1044 最近元素



时间限制: 1000 ms  空间限制: 262144 KB

题目描述

在一个非降序列中,查找与给定值最接近的元素。

输入

第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。
  第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。
  第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。
  接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。

输出

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

样例输入

3
2 5 8
2
10
5

样例输出

8

5

数据范围限制

1 <= n <= 100000。

提示



问题分析

这是一个查找问题,可以使用二分法。

输入数据是非降序的,所以就不用排序了。

找的数满足差值最小,而差值有可能为正,也有可能为负。对于中间的数, 差值为正时,差值更小的数必然在左边;差值为负时,差值更小的数必然在右边。

程序说明

(略)

要点详解

  • 二分法属于分治法,是有效的方法,其计算复杂度为log(n)。

参考链接:(略)。


100分通过的C语言程序:

#include <stdio.h>
#include <stdlib.h>#define N 100000
int a[N];int find(int start, int end, int x)
{int mid;while(start < end) {mid = (start + end) / 2;if(a[mid] > x)end = mid;elsestart = mid;if(start + 1 == end) {if(abs(x - a[start]) > abs(x - a[end]))start = end;elseend = start;}}return start;
}int main(void)
{int n, m, x, i;// 读入数据scanf("%d", &n);for(i=0; i<n; i++)scanf("%d", &a[i]);// 处理询问scanf("%d", &m);for(i=1; i<=m; i++) {scanf("%d", &x);// 二分查找int anspos = find(0, n - 1, x);// 输出结果printf("%d\n", a[anspos]);}return 0;
}

CCF NOI1044 最近元素相关推荐

  1. CCF认证历年真题 满分代码(更新至2018年12月)

    目标是集齐所有CCF认证试题的满分代码! 每次考试出题一般规律: 第一题:水题(稍微有些编程经验就可以写) 第二题:小模拟(处理比较简单的问题,掌握C++STL很有帮助) 第三题:大模拟(处理复杂的问 ...

  2. widget中文技术文档

    Version 3.1.1 版 2006 年 4 月 14 日   著作权 2002-2006 Yahoo! Inc. 保留所有权利   版本历史 第一次发行 第二次发行 第三次发行 第四次发行 第五 ...

  3. C++版本OpenCv教程

    C++版本OpenCv教程(一)Mat-基本的图像容器 目标 我们有多种方法从现实世界获取数字图像:数码相机.扫描仪.计算机断层扫描和磁共振成像等等.在以上任何情况下,我们(人类)看到的都是图像.然而 ...

  4. CCF NOI1045 元素之和

    问题链接:CCF NOI1045 元素之和. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 输入4*4方阵,分别求两条对角线上元素之和. 输入 输入4*4方阵. 输出 输出两 ...

  5. ccf z字形 java_第三次CCF计算机软件能力认证题目:Z字形扫描

    这是第三次CCF计算机软件能力认证考试(2014年12月14日)的一道题目.小编今天有幸免费参加了这次考试.据说这题是谷歌的笔试题变形??求证实.. 好了,题外话不啰嗦,看题目 题目 在图像编码的算法 ...

  6. 云计算的未来,就是“打车模式” | CCF C³@亚马逊云科技

    金磊 梦晨 发自 凹非寺 量子位 报道 | 公众号 QbitAI 企业"无云"将会非常罕见,就像"无网络"一样窘迫. 早在2016年,知名研究机构Gartner ...

  7. 定义了浮动元素后margin-bottom失效的解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 虽然IE6慢慢的退出市场了,但是还是有必要了解一些兼容问题,让自己的知识有一个更好的沉淀.margin-bottom的bug是 ...

  8. CCF NOI1054 扫雷游戏

    问题链接:CCF NOI1054 扫雷游戏. 时间限制: 1000 ms  空间限制: 262144 KB 题目描述 扫雷游戏是一款十分经典的单机小游戏.它的精髓在于,通过已翻开格子所提示的周围格地雷 ...

  9. 技术论坛 | CCF YOCSEF上海即将在 CNCC 举办“知识图谱遇见社交媒体”专题论坛

    中国计算机学会青年计算机科技论坛 CCF YoungComputer Scientists & Engineers Forum CCF YOCSEF上海 CNCC2017大会技术论坛 主题: ...

最新文章

  1. 数据结构与算法:14 Leetcode同步练习(五)
  2. 【pmcaff】电商人必须了解的生意经:女人的生意怎么做?
  3. POJ3678-Katu Puzzle【2-SAT】
  4. linux查看java虚拟机内存_深入理解java虚拟机(linux与jvm内存关系)
  5. PL/SQL Developer SQL Window中不能插入多条数据
  6. 关于 # 符号的使用 - 给 厨师 的回复
  7. vasp和ms_采用MS建模的基本步骤以及vasp新手入门需要注意的十个简单问题
  8. 计算机网络中最常用的三种设备,计算机网络基础试卷6
  9. 服务器信息批量收集,如何批量导入或导出服务器信息
  10. 3.33 利用快速蒙版制作选区 [原创Ps教程]
  11. HDU5510 Bazinga(KMP)
  12. linux用户无法接收邮件,linux 下 搭建邮件邮件服务器(Postfix+Dovecot)(一)-系统账户登陆收发邮件...
  13. 用python-turtle优雅的画椭圆
  14. x265编码H265
  15. 安装es-header插件
  16. 筛质数—(朴素筛法、埃氏筛法、欧拉筛法(线性筛法))
  17. 讲python讲得好的评价_分析20万条弹幕告诉你,8.9分的高分剧《隐秘的角落》到底好看在哪儿?...
  18. [LeetCode]91.Decode Ways
  19. iOS开发:分辨率像素你知多少
  20. python入门须知

热门文章

  1. 使用Unity开发RPG游戏完整指南(全)
  2. 常用JQuery插件整理 1
  3. Flash教程:多种图片切换效果
  4. Visual C# 资源文件编程--使用资源文件
  5. javaweb不同用户登录不同页面的页面_Java Web轻松学36 - 第二个Servlet应用租房网(1)...
  6. 【java学习之路】(mysql篇)001.mysql基本介绍、常用命令及简单查询
  7. 计算机管理主要是作业管理和什么管理,计算机四级之作业管理试题
  8. Linux 下 Weblogic 的安装 、配置以及发布
  9. java 有三个map,第一个map是第二个和第三个map的key的对应映射,对比第二个map的值和第三个map对的值是否一致
  10. OpenCV精进之路(十三):角点检测