二分查找
小盼你最萌哒
这个作者很懒,什么都没留下…
展开
-
手写二分查找
对于给定已排序数组的二分查找。因为每次对比之后mid位置并可能是结果,所以进行相应的加减并不会跳过结果。 左值加1和右值减1也不会担心边界取不到的问题。#include <iostream>using namespace std;int a[10]= {1,3,5,7,10,18,21,55,60,71};int erfen(int zuo,int you,int key){ int原创 2015-07-30 18:56:49 · 2004 阅读 · 0 评论 -
lower_bound 二分查找
必要头文件:#include <iostream>using namespace std;lower_bound 是STL函数库里面的一个查找函数。 函数参数的意义:int pos=lower_bound(a,a+10,b)-a;以上例来说,a是有序数组,10是数组的长度,b是待查找的元素,pos是返回位置。 lower_bound看起来只有三个参数,但其实是4个!lower_bound(查询原创 2015-07-30 19:00:01 · 1021 阅读 · 0 评论 -
HDU 2141 Can you find it? 二分查找
原题: http://acm.hdu.edu.cn/showproblem.php?pid=2141题目大意: 四个数组,a,b,c,x。 第一排分别输入a的元素个数,b的元素个数,c的元素个数。 后面三排输入abc分别有哪些元素。 后面一排输入x的元素个数。 后面则输入x分别有哪些元素。暴力解法就是三重for循环,枚举所有情况是否满足和等于x。 显然,500*500*500*100原创 2015-07-29 19:35:01 · 434 阅读 · 0 评论 -
CodeForces 372A Counting Kangaroos is Fun 动物PK
原题: http://codeforces.com/problemset/problem/372/A题目大意: 找到尽可能多的两满足a*2<=b的一对数数(每个数只能用一次),最后输出总数-对数。如果我们直接比较并标记,需要用时是O(n^2),并且不一定能找到最优解。 这里的处理办法是先对所有数据排一次序。显然,对于n个数,最多有n/2组。如下: 当n为偶数时,如图,当n为奇数时,我们只原创 2015-07-29 18:30:05 · 887 阅读 · 0 评论