- 博客(5)
- 收藏
- 关注
原创 二分写法
二分的正确写法整数二分int l = 0, r = n;while (l <= r) { int nMid = (l + r) >> 1; if (Judge(x, y, nMid)) { l = nMid + 1; } else { r = nMid - 1; }}//注意当l为0时, 输出0, 而非-1cout << l
2017-03-18 20:41:14 513
原创 链表详解
数组和链表(为何引入链表)数组是计算机根据事先定义好的数据类型和长度自动分配一个连续的存储单元,相同数组的位置和距离都是固定的,换句话说,任何一个数组元素的地址都可以用一个公式计算出来,因此这种数据结构可以有效的对数组元素进行随机访问。但是如果要对数组元素进行插入和删除操作,就会引起大量数据的移动,从而使简单的数据处理变得非常复杂、低效。 为了有效解决这一问题,引入了链表这一数据结构。链表 链表
2017-03-18 20:33:13 1463
原创 哈夫曼树和哈夫曼编码
哈夫曼树哈夫曼树是一种带权路径长度最短的二叉树,也称最优二叉树: 它们的带权路径长度为: 图a:WPL = 5 * 2 + 7 * 2 + 2 * 2 + 13 * 2 = 54 图b:WPL = 5 * 3 + 2 * 3 + 7 * 2 + 13 * 1 = 48 可见,图b的带权路径长度较小,图b就是哈夫曼树(最优二叉树)构建哈夫曼树将所有左、右子树都为空的节点作为根节点。在森
2017-03-18 20:28:23 3280
原创 AC自动机粗略解析
AC自动机解决的问题是,多个单词在一篇文章中出现频率的多对一类的问题。解决问题的步骤是:1、建立Trie树;2、构造失败指针;3、模式匹配。构造失败指针是关键步骤,能够降低匹配的复杂度,有类似于KMP算法中next[]数组的作用,只是比next[]在匹配时要麻烦一点,但是可以先预处理出next数组。失败指针,顾名思义,即在匹配失败的时候下一步的位置,如果不用AC自动机,则会回溯到根节点,这样必然是不
2017-02-19 09:45:43 299
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人