数据结构
文章平均质量分 81
Yoangh
奋斗的小程序猿
展开
-
字典树
字典树是一种以树这种结构为基础建立的算法,那么字典树到底有哪些典型的应用呢?1.字典树在串的快速检索中的应用。 给出N个单词组成的熟词表,以及一篇全用小写英文书写的文章,请你按最早出现的顺序写出所有不在熟词表中的生词。在这道题中,我们可以用字典树,先把熟词建一棵树,然后读入文章进行比较,这种方法效率是比较高的。2. 字典树在“串”排序方面的应用 给定N个互不相同的仅由一原创 2013-03-28 18:30:04 · 1062 阅读 · 0 评论 -
RMQ算法分析
RMQ算法,是一个快速求区间最值的离线算法,预处理时间复杂度O(n*log(n)),查询O(1),所以是一个很快速的算法,当然这个问题用线段树同样能够解决。问题:给出n个数ai,让你快速查询某个区间的的最值。算法分类:DP+位运算算法分析:这个算法就是基于DP和位运算符,我们用dp【i】【j】表示从第 i 位开始,到第 i + 2^j 位的最大值或者最小值。原创 2014-08-06 18:48:20 · 11257 阅读 · 2 评论 -
spoj 375. Query on a tree 【树链剖分--插点问线 】
题目:spoj 375. Query on a tree题意:题意很清晰,就是给你一颗树,每两点之间有权值,然后改变一些权值,问一条路径上的最大值。分析:入门题目,直接套树链模板AC代码;#include #include #include #include using namespace std;const int N = 10010;#define原创 2014-10-21 11:43:57 · 2166 阅读 · 0 评论 -
poj 1985 Cow Marathon 【树的直径】
题目:poj 1985 Cow Marathon题意:给出一个树,让你求树的直径。分析:树的直径:树上两点之间的最大距离。我们从任意一点出发,BFS一个最远距离,然后从这个点出发,在BFS一个最远距离,就是树的直径、AC代码:/*POJ:1985 Cow Marathon2014/10/12/21:18Yougth*/#include #i原创 2014-10-12 21:48:37 · 2458 阅读 · 0 评论 -
poj 2763 Housewife Wind 【树链剖分维护树上权值和】
题目:poj 2763 Housewife Wind题意:给一个数,边之间有权值,然后两种操作,第一种:求任意两点的权值和,第二,修改树上两点的权值。分析:很基础的一个树链剖分维护树上权值和,第二道树链剖分题目,也错了好几次。而且这个题目卡vector。有点坑。AC代码:#include #include #include #include usin原创 2014-11-10 17:29:14 · 3605 阅读 · 0 评论 -
树链剖分详解及模板
这几天学习了一下树链剖分,顺便写一下我的理解、早上看了一下别人的讲解,云里雾里,终于算是搞懂了、树链剖分是解决在树上进行插点问线,插线问点等一系列树上的问题假如现在给你一棵树,然后没两条边之间有一条权值,有一些操作,1:x---y之间的最大权值是多少,2:改变x---y之间的权值当前这样的操作有很多,如果直接用暴力的方法的话肯定不行,那么就要想一个好的方法,我们可以想一原创 2014-10-21 17:40:59 · 25952 阅读 · 3 评论 -
KMP模板
KMP算法是快速字符串匹配算法,朴素的暴力算法的时间复杂度为O(n*m),而KMP通过对模式串进行相应的处理,能够达到O(m+n)的速度。我们知道在字符串匹配的时候最消耗时间的就是当匹配到第 i 个位置发现不匹配时,下一次又对模式串进行一次重新匹配,那么假如模式串中有很多相同的字母的话,这样做了很多重复的事情,那么我可以对模式串进行一定的处理,处理处一个对应的数组,让他保存假如这里不匹配是我下原创 2014-08-05 09:12:18 · 8177 阅读 · 2 评论 -
poj 1655 Balancing Act 【树的重心】
知识点:树的重心定义:以这个点为根,那么所有的子树(不算整个树自身)的大小都不超过整个树大小的一半。性质:性质 1 :树中所有点到某个点的距离和中,到重心的距离和是最小的,如果有两个距离和,他们的距离和一样。性质 2 :把两棵树通过某一点相连得到一颗新的树,新的树的重心必然在连接原来两棵树重心的路径上。性质 3 :一棵树添加或者删除一个节点,树的重心最多只移动一原创 2014-07-26 19:54:13 · 1654 阅读 · 0 评论 -
poj 3349(hash)
很久就听说过hash了,但是一直没有做过相关的题目。题意大概就是给你n个雪花,每个雪花有六个花瓣代表六个值,判断是否有至少一堆相同的雪花。由于n值较大,而且每次要判断6个数,我开始根据我自己学的一点hash的至少,先存起来,然后求6个值的和取余一个值,存在一个数组里面,然后每次向前找所有的如果有相同的,则比较六个值,超时了。后来看了别人的写法,发现弱爆了。那样找的话很慢。其实差别就在存原创 2014-03-05 17:59:09 · 5098 阅读 · 7 评论 -
数据结构之哈希(poj3274)
寒假集训的时候学习了一下哈希,但是一直没有练习,这几天找了几道哈希的题目,发现忘的差不多了。做了几道题之后发现哈希真的是一个很高效的数据结构,体验到了数据结构的强大。构建哈希表示为了能够更高效率的查找,还记得小学的时候查字典吗?其实哈希就相当于那样一个东西,他把数据按照一定的哈希函数生成一个键值,然后把所有键值相同的存在一个相同的数组中,然后查找的时候首先找它的键值,找到键值之后只用在键值原创 2014-03-06 20:34:33 · 2056 阅读 · 0 评论 -
二叉树的操作(后续更新)
二叉树的操作(建树,先序遍历,交换左右子树,销毁)/*建立一棵二叉树,实现先序遍历,左右子树的交换和销毁二叉树的操作。*/#include #includeusing namespace std;typedef struct BiTNode {char data;struct BiTNode *lchild , *rchild ;//}BiT原创 2013-07-22 18:06:18 · 1662 阅读 · 0 评论 -
Uva11234 - Expressions
11234 - Expressions 第一道自己真正尝试的二叉树题目,虽然最后还是借鉴别人的代码,但是感觉对二叉树现在有点信心了。这道题题意就是给出一个二叉树的后续遍历结果,求直接遍历的结果。就是先根据后续遍历序列建树,然后在一个广搜输出结果就OK。。。代码:#include #include #include #include #include #include #in原创 2013-07-22 11:54:06 · 1232 阅读 · 0 评论 -
算法入门经典二叉树系列 UVO
首先是例题6.3.3层次遍历.题意描述:输入一颗二叉树,你的任务是按从上到下,从左到右的顺序输出各个节点的值。每个节点都按照从根节点到它的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左括号之间没有空格,相邻节点之间用一个空格隔开。每棵树的输入用一对空括号()结束(这对括号本身不代表一个结点),如图所示。原创 2013-07-11 17:48:38 · 1748 阅读 · 0 评论 -
Uva 算法入门经典(数据结构基础)线性表题目
这些题目都有一个共同点就是题目不容易看懂,对我们这些英语水的童鞋可是一个很大的挑战啊。。好了不废话,上题目:Uva101 - The Blocks Problem 此题最大的挑战就是难懂,这里综合一下别人的翻译。操作就是move a onto bwhere a and b are block numbers, puts block a onto block b原创 2013-07-10 16:25:04 · 1424 阅读 · 0 评论 -
hdoj 3791 二叉树遍历
二叉搜索树Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1974 Accepted Submission(s): 876Problem Description判断两序列是否为同一二叉搜索树序列 I原创 2013-05-29 21:46:06 · 1505 阅读 · 0 评论 -
nyoj 树状数组系列
树状数组之插线问点题:http://acm.nyist.net/JudgeOnline/problem.php?pid=123树状数组之插点问线题:http://acm.nyist.net/JudgeOnline/problem.php?pid=116树状数组之求逆序数http://acm.nyist.net/JudgeOnline/problem.php?pid=117原创 2013-03-22 09:34:15 · 1070 阅读 · 0 评论 -
链表常用操作及面试题
链表是一种比较基础的数据结构,虽然在acm比赛中不常用,但是在面试中还是比较常问的,所以拿出来写了一下,发现很多错误,由于操作中用到很多指针,所以不经常写的话很容易写错。这里写了一下链表的创建,比较基础! 然后是删除链表的元素,需要考虑删除的是否为第一个元素。 然后是找链表的倒数第k个元素,可以用两个指针,一个指针后移k次,然后两个同时向后走,当先走k次的走到尾部的时候,另一个刚好到倒数第k个元原创 2015-05-05 21:19:50 · 3151 阅读 · 0 评论