1.SPFA转移状态 2.可以标记一个状态(比如到达某个点的什么最小值) 3.累计方案数时如果一个能做的另一个也能做并且二者完全重复就可以把一个清空 4.拓扑排序可以确保DP的无后效性 6.巧用upper_bound和lower_bound,注意二分的重要性 7.破坏可以转换成建设 8.并查集,每一 ...
分类:
其他好文 时间:
2018-09-16 17:39:34
阅读次数:
190
c++二分查找的用法 主要是 std::binary_serach, std::upper_bound以及std::lower_bound 的用法,示例如下: 结果: ...
分类:
其他好文 时间:
2018-09-03 12:11:09
阅读次数:
114
body, table{font family: 微软雅黑; font size: 13.5pt} table{border collapse: collapse; border: solid gray; border width: 2px 0 2px 0;} th{border: 1px soli ...
分类:
编程语言 时间:
2018-08-29 14:47:58
阅读次数:
205
当发现答案是单调的,从已知条件推答案不太容易,而假设知道了答案,推已知量很容易,这时可以二分 二分答案,根据判断答案不断缩小答案所在区间,最终得到答案 细节很烦。。 //lower_bound(arr, arr+n, x) == [l, r)中>=val的第一个元素位置//upper_bound(a ...
分类:
其他好文 时间:
2018-08-28 22:42:25
阅读次数:
229
对于一个有序的序列,可以用二分查找的方式快速找到某一元素。顾名思义,二分查找就是利用二分的思想,通过将要查找的元素与区间中点值比较,大体确定元素位置,舍弃一半的元素,因此效率很高。 c++ STL库中提供了这类函数:lower_bound和upper_bound。其中lower_bound是返回有序 ...
分类:
其他好文 时间:
2018-08-18 19:46:12
阅读次数:
174
正常的求LIS的方法是用dp来做,时间复杂度为O(n^2),但是面对一些题目的时候这个复杂度就有点高了,就去学了一下nlogn的解法。主要运用到了二分查找,stl里面的lower_bound 也可以。 upper_bound(i) 返回的是键值为i的元素可以插入的最后一个位置(上界) lower_b ...
分类:
编程语言 时间:
2018-07-28 16:44:16
阅读次数:
127
分析: 1.由于价格是递减的,所以可能出现si*pi>sj*pj(j>i)。所以要有一个数组来储存当前端点的最小值。 2.然后二分查找当前的si,比较q*p[i]和M[i+1].不过在这之前要确认i是小于n的。】 3.upper_bound是返回第一个大于当前值得坐标,否则返回左闭右开的右端点。而l ...
分类:
其他好文 时间:
2018-07-27 22:24:29
阅读次数:
200
参考自博客:https://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html 一直以来对二分查找都是一知半解,终于今天安心的好好学习了一下 ForwardIter lower_bound(ForwardIter first, Forwar ...
分类:
其他好文 时间:
2018-07-13 22:13:55
阅读次数:
239
介绍: ps:stl容器中也有这两个函数,在这里就不讲了,具体详情参考老师的课件。 1. lower_bound( )是用来查找一个数组中第一个 大于等于 一个数的函数,返回值是这个数的指针。 2. upper_bound( )是用来查找一个数组中第一个 大于 一个数的函数,返回值是这个数的指针。 ...
分类:
其他好文 时间:
2018-07-12 20:16:15
阅读次数:
147
头文件: #include <algorithm> 二分查找的函数有 3 个: 参考:C++ lower_bound 和upper_bound lower_bound(起始地址,结束地址,要查找的数值) 返回的是数值 第一个 出现的位置。 upper_bound(起始地址,结束地址,要查找的数值) ...
分类:
编程语言 时间:
2018-07-10 20:07:23
阅读次数:
155