- 博客(8)
- 收藏
- 关注
原创 简单SBT
SBT平衡二叉树 首先知道BST二叉查找树的特点是:每一个节点的排序关键字大于其左子节点而小于其右子节点。但是遇到特殊情况就可能转换为一个斜着的链表(按树的左右节点的位置可以想象),搜寻一个关键字的效率就变成了O( n )而不是期待的O( log (n ) );因此,为了杜绝这种最坏情况,我们需要找到一种新的构建或在构建的过程中进行优化的方法,那就是旋转;旋转形成的,就是平衡二叉树
2012-10-20 22:47:18 492
原创 简单哈希树
哈希树 在各种介绍里的都比较抽象,其实没有那么难,这里进行一个最简单的说明。 在将一个数进行哈希的时候,我曾经写过关于哈希的这么些东西:对于数,当一个质数不够用的时候,可以加上第二个质数,用两个mod来确定该数据在库中的位置。那么这里需要简单的解释一下,对于一个质数x,它的mod有[ 0 .. x - 1 ] x种;所以对于两个质数x和y,能存储的无一重复的数据有
2012-10-20 22:41:20 10659 1
原创 区间DP
区间DP对于我这个井(又坑又水,横竖都2)来说,确实很烦人的。。。不论怎么学就是弄不明白~但是今天貌似有点开窍了一点,琢磨出来点东西,在这里也就写一下~啦啦啦~ 首先,线性DP都是初状态和末状态的,转移也是分层次转移,关键在于每一次转移的方式是差不多的,大都是2个数比较得出下一个;而区间型动态的初、末状态虽然明确,但MS是得不出来什么具体的东西,因此需要自习考虑,另外,区间动态的每一层都
2012-10-20 12:49:47 415
原创 C++的list的函数
List 用法小结 结构体函数: 无参数的: list l ; 就是新建一个空的链表 1个参数的: list l ( n ) ; 就是建立一个有n个元素的链表,这些元素的值都是默认的 list l ( t ) // t是个list ; 就是建立一个和t一模一样的链表 2个参数的: list l ( n , x ) ; 就是建立一个有n个元素的链表,这些元素的值都初始化为
2012-10-17 21:48:24 417
原创 哈希表的简单应用
哈希表对数的处理 需要找到一个数在全部序列中的位置时,暴力方法就是把存储数的数组从头到尾find一遍,显然最差效率是O(n)。然而如果把该数作为新开一个数组的下标,而新数组中存储的是其在原数组中的位置,即a[n]存放n在原数组中是第几个(当然这种方法实际上很常用了,只是举例),那么这其实就是一个简单的hash表,简单的不像话。 其缺点就是,新数组要囊括扩所有可能的数,即0 因为
2012-10-16 22:37:08 886
原创 高精度
本来就是那么简单的原理,就是麻烦,不好写。 不过好处就是总算把运算符重载给搞懂了。 下面是代码 高精度加法: # include # include # include # include # include # include # include # include # include # include # include #
2012-10-15 21:28:31 316
原创 RMQ的ST(区间最值)
ST算法求解RMQ问题(区间最值) 效率:O(n log n)预处理,O(1)询问 思想: 用 f [ i ][ j ] 表示 以i 开头的区间,包括2^j 个元素的一段区间的最值 那么有初始化的初始化 f [ i ][ 0 ] = a[ i ] (a[ I ]表示第I个元素的值) 然后就有两种初始化的方法 1) 选择一个位置为更新点,然后枚举 2 ^ j ,即固定I ,求
2012-08-06 18:08:43 320
原创 堆
简单堆的特点 1) 第一个点是根结点 2) 头指针指向根结点 3) 本质是一个树 4) 第 I 号节点的左儿子是第I * 2 号,右儿子是第I * 2 + 1号 5) 第I 层元素一定比第I + k ( k>0 ) 层优 堆的建立与维护 1) 每次入队一个元素(假设编号为k) 2) 将此入队元素与其父节点(编号(int)(k/2))进行对比 3)
2012-08-05 14:55:48 423
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人