水题也要优化1.用两个数组单独记录下标的更新2.用STL中lower_bound来进行二分查找.要注意lower_bound的返回值意义 是大于等于val的第一个,所以返回值要进行判断才可以利用#include #include #include #include using namespace s...
分类:
编程语言 时间:
2015-07-20 18:56:06
阅读次数:
185
#include upper_bound(a,a+n,x);查找到x最后一个并返回下一个地址。lower_bound(a,a+n,x);查找到第一个x并返回他的地址。binary_bound(a,a+n,x);查找x,返回Bool。sort(a,a+n,compare)/(v.begin(),v.e...
分类:
其他好文 时间:
2015-07-20 16:17:32
阅读次数:
128
二分专题1 int p=lower_bound(A,A+n,x)-A;//查询>=x的第一个下标2 int p=upper_bound(A,A+n,x)-A;//查询>x的第一个下标3 int p=upper_bound(A,A+n,x)-A-1;//查询<=x的最后一个下标4 int p=lowe...
分类:
其他好文 时间:
2015-07-19 14:56:02
阅读次数:
73
题意:给出n个整数,给定整数S,求长度最短的连续序列,使它们的和大于或等于S第一种,是求前缀和,然后用lower_bound来找第二种,尺取法, 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #i...
分类:
其他好文 时间:
2015-07-08 14:31:26
阅读次数:
127
CodeForces 251A. Points on Line(数学 lower_bound )...
分类:
其他好文 时间:
2015-07-07 22:56:35
阅读次数:
225
我们知道set中 用setS; S.lower_bound(x): 查找Set中 第一个>=x的数,返回结果是指针。 S.upper_bound(x):查找Set中 第一个大于x的数,返回结果是指针。如果想要找到set中小于等于(x)的数,...
分类:
其他好文 时间:
2015-07-05 19:53:50
阅读次数:
166
题目:http://www.51nod.com/contest/problem.html#!problemId=1349
题意:100000个数的序列,有100000次询问,每次问区间最大值大于等于k的区间有多少?
思路:一开始没看到“大于等于”,想了很久也不会,原来看错题了。看错题害死人。
一般询问的问题,如果不能用线段树log(n)求出,那么就离线做。
首先将询问按从大到小排序...
分类:
编程语言 时间:
2015-07-05 12:31:23
阅读次数:
147
题目的意思很明确,ABCD四个集合,从各个集合中抽取一个数,求将四个数相加等于0的组合数。
由于N最大达到4000,所以,暴力的方法过不了,就是时间限制为15000MS也是不行。
不过我们可以双向搜索,也就是折半搜索。
先求出CD这两个集合的两两配对的新的集合CD,然后在从CD集合中找AB集合两两配对的和k的负数有多少个。用upper_bound和lower_bound函数可以很快的求解出来...
分类:
其他好文 时间:
2015-06-30 16:19:57
阅读次数:
125
二分法(自己写的格外放心)
1.lower_bound
注意要是查找一个数组的话 应该从(-1, n)的范围内查找
r表示出现的最小位置
void solve(int l, int r)///(l,r]{ while(l + 1 r) { int mid = (l + r) >> 1; if(a[mid] >= k) ...
分类:
其他好文 时间:
2015-06-23 13:37:14
阅读次数:
136
lower_bound当target存在时, 返回它出现的第一个位置,如果不存在,则返回这样一个下标i:在此处插入target后,序列仍然有序。代码如下:int lower_bound(int* nums, int numsSize, int target) { //注意left和right的...
分类:
其他好文 时间:
2015-06-21 18:20:38
阅读次数:
112