- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 二分搜索
二分搜索法通常用来在有序数组中快速查找某值,但它的作用不仅仅就是这样,其在求最优解的问题上也非常有用。 让我们考虑一下“求满足某个条件C(x)最小的x”这一问题。对于任意满足C(x)的x,如果所有的x’ >= x 也满足C(x’)的话,我们就可以用二分搜索来球的最小的x。 首先将区间左端点初始化为不满足C(x)的值,右端点初始化为满足C(x)的值,每次取mid=(L+R)/2,
2017-05-24 17:06:07 173
原创 分桶发和平方分割
分桶法(bucketmethod)是把一排物品或者平面分成桶,每个桶分别维护自己内部的信息,以达到高效计算的目的的方法。 其中,平方分割(sqrtdecomposition)是把排成一排的n个元素每根号n个分在一个桶内进行维护的方法的统称。这样的分割方法可以使对区间的操作的复杂度降至O(n*(1/2))。 和线段树一样,根据维护的数据不同,平方分割可以支持很多不同的操作。接下来
2017-05-22 16:28:04 317
原创 双向广度搜索
广度搜索是十分基本的搜索规则,就是从初始节点开始一层层扩展到目标节点,但它只能较好地解决状态不太多的问题,一旦搜索量巨大,往往会出现内存空间不够用的状况。双向广度搜索就是对广度搜索的改进,减少空间和时间上的复杂度。 有些问题按照广度搜索进行节点扩展,即适合逆序,也适合顺序,于是可以将单向搜索变为双向,初始节点向目标节点以及目标节点向初始节点,当两个扩展方向上出现同一个节点,搜索结束。
2017-05-22 14:43:48 482
原创 尺取法
尺取法是用于求解某一类问题的高效方法,该类问题就是在一组数据中找到不大于某一个上限的“最优连续子序列”。 例子:poj3061:http://poj.org/problem?id=3061 给定长度为n的数组和一个整数m,求综合不小于m的连续子序列的最小长度。这正是尺取法所适用的那一类问题。 以下为尺取法的查找思路: 以下为尺取法的核心代码: int l = 0,w
2017-05-15 16:57:28 233
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人