ACM 数据结构
文章平均质量分 62
穿袜子的流氓兔
这个作者很懒,什么都没留下…
展开
-
Trie字典树
字典树没有自己的代码,百度来一下。 应用编辑 串的快速检索 给出N个单词组成的熟词表,以及一篇全用小写英文书写的文章,请你按最早出现的顺序写出所有不在熟词表中的生词。 在这道题中,我们可以用数组枚举,用哈希,用字典树,先把熟词建一棵树,然后读入文章进行比较,这种方法效率是比较高的。 “串”排序 给定N个互不相同的仅由一个单词构成的英文名,让你将他们按字典序从小到大输出 用字典树进行排原创 2014-03-01 20:35:48 · 740 阅读 · 0 评论 -
树状数组 (poj 2352)
题目链接:http://poj.org/problem?id=2352 题目大意: 给你星星的坐标(y递增,若y相等,x递增),每个星星都有一个等级,规定它的等级就是在它左下方的星星的个数。输入所有星星后,依次输出等级为0到n-1的星星的个数。 解题思路: 就是统计x前面比它小的星星的个数,符合树状数组最基本的应用。 注意的是:树状数组下标为0的位置不可用,所以我们需要在输入x坐标时+1原创 2014-03-01 21:13:09 · 799 阅读 · 0 评论 -
RMQ线段树(poj3264)
题意是求出数组某一段的最大值和最小值。 mmax[i][j]表示[i, i+2^j - 1]区间中的最大值。 #include #include #include #include #define max(a,b) a>b?a:b #define min(a,b) a<b?a:b using namespace std; int d[50005]; int mmax[5原创 2014-03-01 21:30:24 · 987 阅读 · 0 评论 -
优先队列(priority)--hdu4006
在优先队列中,优先级高的元素先出队列。 标准库默认使用元素类型的 优先队列的第一种用法,也是最常用的用法: priority_queueint> qi; 通过 故示例1中输出结果为:9 6 5 3 2 第二种方法: 在示例1中,如果我们要把元素从小到大输出怎么办呢? 这时我们可以传入一个比较函数,使用functional.h函数对象作为比较函数。 priori原创 2014-03-30 18:41:58 · 855 阅读 · 0 评论 -
计算a、b字符串的不连续公共子串的长度(包含c字符串) ----hdu4681
题意: 给你字符串A,B,C,让你找一个字符串D,使得D串是A,B的字串,C串是D的连续字串。 做法: 找出C串在A,B串的位置。 对于每一个位置对,D串的长度为前一半的最长公共子序列+C串的长度+后一半的最长公共子序列 #include #include #include #define N 1005 #define Max(a,b) a>b?a:b using原创 2014-03-18 15:43:15 · 1254 阅读 · 0 评论 -
KMP求最小重复子串的重复次数(poj2406)
1、用一个例子来解释,下面是一个子串的next数组的值,可以看到这个子串的对称程度很高,所以next值都比较大。位置i0123456789101112131415前缀next[i]0000123123456740子串agctagcagctagctg #include #include #include using namespace std; int len; int next[1000005原创 2014-03-25 16:52:29 · 1127 阅读 · 0 评论 -
后缀数组_DC3(模板大全)
/* suffix数组:第i位到最后的字符串 sa数组:将排序后的后缀的开头位置顺次放入SA中,称为后缀数组 rank数组:令rank[i]保存suffix[i]在排序中的名次,名次数组 */ #include "stdio.h" #include "string.h" #define maxn 20004 #define maxm 1000005 #define F(x) ((x)/3+((x原创 2014-03-25 20:08:34 · 1273 阅读 · 0 评论