二分练习--我真的会二分吗

二分练习

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

给你一个序列,然后给你m个元素,让你从序列中找出与每个元素最接近的数字输出来,如果有两个就输出两个。

输入

多组输入,第一行给你两个数n(0 < n < 10000000),m(0 < m < n),接下来是数列的n个数,然后再输入m个元素,让你找出最接近每个元素的值。如果有两个,按从小到大输出。

输出

这m个数分别输出最接近每个元素的值,组与组之间输出一个空行。

示例输入

8 4
1 2 3 4 5 6 8 11
4
9
2
7

示例输出

4
8
2
6 8
 
本来学了二分之后感觉会了,但过上一段时间来做这么一道变形题,考虑的还是不够充分。思路的话我比较喜欢写在代码里面(我怕我回头读不懂
 

 

二分练习--我真的会二分吗

时间: 2024-10-06 04:03:29

二分练习--我真的会二分吗的相关文章

(转载)你真的会二分查找吗?

原文地址 :http://blog.csdn.net/int64ago/article/details/7425727 看到这个标题无论你是处于怎样的心理进来看了,我觉得都是值得的.因为这个问题太简单,任何一个开始接触“真正”算法基本都是从二分查找开始的.至于二分查找都不知道是什么的可以先去找别的资料看下,再来看这篇文章.既然很简单,那么我们开始一起写一个吧,要求是对num[]={1,2,2,4,4,8,10}不减序列在区间[0,7)进行查找,当然我们得首先保证要查找的数e满足:num[0] <

HDU 2289 Cup(二分可以,但是除了二分呢?)

这道题目,算数学题吗?算二分题吗?充其量算个水题吧... 首先,没有用二分,但是发现了一种新的解法来代替二分. 若果按照i从0,每次增加0.00000001来一直枚举到h的话,绝逼超时.枚举量太大了 但是可以分成两步来呀: #include<cstdio> #include<cmath> #define pai acos(-1.0) double r1,r2,h,v; double get_v(double temp) { double rr=r1+(r2-r1)*temp/h;

【cdq分治】cdq分治与整体二分学习笔记Part1.整体二分

之所以把cdq分治和整体二分放在一起学习,是因为他们两个实在太像了-不管是做法还是代码- 感觉整体二分可能会比cdq分治稍微简单那么一点点?所以先学整体二分.(感觉他们的区别在于整体二分是对每个操作二分答案,cdq是分治了操作序列) 整体二分是对答案进行二分,其具体操作如下: (比如以ZJOJ2013K大数查询为例) 具体过程 Step1.从(L,R)二分答案.mid=(L+R)>>1,用线段树维护原序列中(a,b)位置比mid大的数有多少个,同时记录对序列的操作分别是什么操作. Step2.

【转】你真的会二分查找吗?

转自:http://blog.csdn.net/int64ago/article/details/7425727 红色字体为我对此转载文章的批注 看到这个标题无论你是处于怎样的心理进来看了,我觉得都是值得的.因为这个问题太简单,任何一个开始接触"真正"算法基本都是从二分查找开始的.至于二分查找都不知道是什么的可以先去找别的资料看下,再来看这篇文章.既然很简单,那么我们开始一起写一个吧,要求是对num[]={1,2,2,4,4,8,10}不减序列在区间[0,7)进行查找,当然我们得首先保

你真的会二分查找吗

二分查找经常写挂,最常写挂的就是陷入一个死循环,如何避免呢? 网上有很多版本的二分代码.循环条件有:l < r的,有l+1 < r的,有l <= r的.做个总结吧. 一.首先是二分查找一个值,找到返回其下标,否则返回-1. //在a[l] ~ a[r]中查找s int binary_search(int l, int r, int s){ while(l <= r){ int m = (l+r)/2; if(a[m] == s) return m; if(a[m] < s)

HDU6621 K-th Closest Distance 第 k 小绝对值(主席树(统计范围的数有多少个)+ 二分 || 权值线段树+二分)

题意:给一个数组,每次给 l ,r, p, k,问区间 [l, r] 的数与 p 作差的绝对值的第 k 小,这个绝对值是多少 分析:首先我们先分析单次查询怎么做: 题目给出的数据与多次查询已经在提示着我们在用数据结构去解决这个问题,对于常见的处理区间的数据结构首选线段树啦: 我觉得这道题的关键在于此:我们需要去二分答案ans,  为什么呢? 我们这样观察 ,对于 | p-a[i] | <= ans  等于 p-ans<=a[i] <=p+ans   那问题就转化为查询[L,R] 区间里面

#1128 : 二分&#183;二分查找 ( 两种方法 先排序在二分O(nlogN) + 直接二分+快排思想O(2N) )

#1128 : 二分·二分查找 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Nettle最近在玩<艦これ>,因此Nettle收集了很多很多的船(这里我们假设Nettle氪了很多金,开了无数个船位).去除掉重复的船之后,还剩下N(1≤N≤1,000,000)种不同的船.每一艘船有一个稀有值,任意两艘船的稀有值都不相同,稀有值越小的船越稀有,价值也就越高. Nettle现在通过大建又造出了一艘船,他想知道这艘船是不是重复的.如果是重复的,那么这艘船在Nettle所

木材加工(裸二分题)(附二分算法粗略介绍)

看到旁边的学弟也在做二分,就手贱2分钟打了一道奇(sha)特(bi)二分题. 原题传送门 好吧,做这道题是为了给新手一个教程 首先我们聊聊二分. 二分利用的也是分治思想 不懂分治思想的可以看看我归并做的那道火柴排队. 传送门 首先要了解一下二分的性质(也就是什么题目要用二分来写.) 我们假设一个题目,如果一个数a能够满足题意,并且U=[数值最小值/数值最大值(看题意)~a]中的数就一定能够满足题意. 那么这道题目就能用来二分.. 或者说一道题目的解的解集为U,如0<i<a;题目的范围是0<

TOJ 4602:高桥和低桥(二分或树状数组+二分)

描述 有个脑筋急转弯是这样的:有距离很近的一高一低两座桥,两次洪水之后高桥被淹了两次,低桥却只被淹了一次,为什么?答案是:因为低桥太低了,第一次洪水退去之后水位依然在低桥之上,所以不算"淹了两次".举例说明:假定高桥和低桥的高度分别是5和2,初始水位为1第一次洪水:水位提高到6(两个桥都被淹),退到2(高桥不再被淹,但低桥仍然被淹)第二次洪水:水位提高到8(高桥又被淹了),退到3.没错,文字游戏.关键在于"又"的含义.如果某次洪水退去之后一座桥仍然被淹(即水位不小于