T1 : 求给定集合有多少个非空子集可以分割成两个集合,使得它们的和相等。 其中:$n\leq20~,~a[i]\leq1e8$ 由于$n$比较小,所以可以考虑爆搜。朴素的爆搜可以枚举每个数不选,第一个集合,第二个集合,复杂度$O(3^n)$ 。 然后发现根据套路,可以想到折半搜索$(meet~ i ...
分类:
其他好文 时间:
2018-10-16 18:39:28
阅读次数:
135
插值查找 在介绍插值查找之前,首先考虑一个新问题,为什么上述算法一定要是折半,而不是折四分之一或者折更多呢? 打个比方,在英文字典里面查“apple”,你下意识翻开字典是翻前面的书页还是后面的书页呢?如果再让你查“zoo”,你又怎么查?很显然,这里你绝对不会是从中间开始查起,而是有一定目的的往前或往 ...
分类:
编程语言 时间:
2018-10-16 17:45:24
阅读次数:
151
T1 (折半搜索) 题意: 给定一个序列,求有多少个非空子集,能划分成和相等的两份。 即[Usaco2012 Open]Balanced Cow Subsets; 数据范围n<=20,mi<=1e8,测试时打了个暴搜过了60分, 转化一下模型能知道对于每个数来说只会有3种情况, 1、没有被选; 2、 ...
分类:
其他好文 时间:
2018-10-16 17:42:51
阅读次数:
149
问题描述:使用二分搜索的算法,每次进行折半查找,直到最后查到所需查找的值x为止。 算法描述:二分搜索:基本思想是将n个元素分成个数大致相同的两半,取a【n/2】与x作比较。如果x=a【n/2】,则找到x,算法终止;如果x<a[n/2],则只在数组a的左半部分继续搜索x;如果x>a【n/2】,则只在数 ...
分类:
编程语言 时间:
2018-10-14 16:38:09
阅读次数:
118
20172310 蓝墨云ASL测试 2018 1938872 题目: 已知线性表具有元素{5,13,19,21,37,56,64,75,80,88,92},如果使用折半查找法,ASL是多少? 解答:(今天因为去啦啦操彩排,所以现在完成这篇博客) 首先,因为没有上课,所以自己去理解折半查找法 在计算机 ...
分类:
其他好文 时间:
2018-10-13 02:30:18
阅读次数:
208
介绍 折半查找,又称作二分查找。这个查找的算法的特点,就是,要求数据要是有序的。 1 ,存储结构一定是顺序存储 2 ,关键字大小必须有序排列 然后,利用这组有序的数据之间的关系,来进行折半的查找。 比方说,这组数据是升序排列的。一开始,首先对比这组数据的中间的项与关键值(key)的关系。若是关键值( ...
分类:
其他好文 时间:
2018-10-13 02:23:16
阅读次数:
134
二分查找又称折半查找,是针对有序顺序表的查找,前提:数据是顺序存储的,已经按照关键词进行升序排序。查找成功返回索引值,查找不成功返回-1。 下面用java来实现二分查找算法: ...
分类:
编程语言 时间:
2018-10-11 21:50:45
阅读次数:
127
二分查找算法(JAVA) 1.二分查找又称折半查找,它是一种效率较高的查找方法。 2.二分查找要求:(1)必须采用顺序存储结构 (2).必须按关键字大小有序排列 3.原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值 ...
分类:
其他好文 时间:
2018-10-09 15:04:12
阅读次数:
111
Java的经典排序 选择排序 冒泡排序 折半查找 选择排序 | 选择排序 | 3 | 2 | 1 | 5 | 8 | | : : | : : | : : | | | | | 0 | 1 | 3 | 2 | 5 | 8 | | 1 | 1 | 2 | 3 | 5 | 8 | | 2 | 1 | 2 | ...
分类:
编程语言 时间:
2018-10-07 22:06:28
阅读次数:
218
原创 先来看将两个有序数组合并成一个有序数组是如何操作的; 设有序数组为a和b,结果数组c; 归并排序的思想用的是分治法,假设待排序数组为array[n],再新建一个辅助数组array1[n]。 通过不断的将数组array进行递归折半(int mid=(left+right)/2),最后rihgt= ...
分类:
编程语言 时间:
2018-10-04 16:39:46
阅读次数:
167