题意:
给出N个字符串,要求选出若干个,使得选中的字符串的公共前缀长度与选中字符串的个数的乘积最大。
分析:
简单粗暴的Trie模板题。
对于Tire中的每一个结点添加两个信息:该结点的深度及该结点杯访问的次数,最后求出这两个信息的最大值就行了,边加入字符串边维护就行。...
分类:
其他好文 时间:
2014-10-04 22:39:07
阅读次数:
281
题目大意:给定一个字符串,提供下列操作:
1.查询从x开始的后缀和从y开始的后缀的最长公共前缀长度
2.将x位置的字符修改为y
3.在x位置的字符后面插入字符y
看到这题一开始我先懵住了。。。这啥。。我第一时间想到的是后缀数据结构 但是不会写 而且后缀数据结构也不支持修改操作
后来无奈找了题解才知道是Hash+二分。。。 太强大了 Hash+二分打爆一切啊
用Splay维护这个字符串的...
分类:
Web程序 时间:
2014-10-03 14:22:14
阅读次数:
961
思路:枚举第一个字符串的位置,然后枚举最长公共前缀的长度,时间即会下降……
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define mem(a,b) memset(...
分类:
其他好文 时间:
2014-09-30 19:14:09
阅读次数:
184
本题是利用后缀数组求最长的回文串。方法是将字符串反转之后拼接到原来的字符串末尾,中间用一个没有出现过的分割符隔开,原因是防止最长公共前缀横跨两个串。之后分别枚举回文串的中点,以及回文串长度是奇数还是偶数,看一下对应位置的最长公共前缀即可。这里的求最长公共前缀要处理RMQ问题,线段树固然可以解决,但是...
分类:
其他好文 时间:
2014-09-26 22:10:08
阅读次数:
142
题记:这道题不难但是很有意思,有两种解题思路,可以说一种是横向扫描,一种是纵向扫描。横向扫描:遍历所有字符串,每次跟当前得出的最长公共前缀串进行对比,不断修正,最后得出最长公共前缀串。纵向扫描:对所有串,从字符串第0位开始比较,全部相等则继续比较第1,2...n位,直到发生不全部相等的情况,则得出最...
分类:
其他好文 时间:
2014-09-22 00:12:11
阅读次数:
267
Trie树也称字典树,因为其效率很高,所以在在字符串查找、前缀匹配等中应用很广泛,其高效率是以空间为代价的。利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询操作的复杂度。下面以单词为例,插入、查找和删除实现#define MaxN 26typedef struct TrieN...
分类:
其他好文 时间:
2014-09-18 00:35:43
阅读次数:
208
Trie树,又称为字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树数据结构。
用于保存大量的字符串。它的优点是:利用字符串的公共前缀来节约存储空间。
Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。
它有3个基本性质:
1、根节点不包含字符,除根节点外每一个节点都只包含一个字符。
2、从根节点到某一节点,路径上经过的...
分类:
其他好文 时间:
2014-09-16 23:48:21
阅读次数:
486
思路:这题看了题解说是后缀数组做的,然后自己就偿试了一下,唉……没想到不管是不管是倍增算法的后缀还是DC3算法的后缀都T了,实在无计可施了,可能只有哗然可以过了。不过比赛那天题解说是没有卡后缀的。只是比赛那天自己还不会后缀数组,所以这题自己根本就没有看到。因为后缀自己练得还比较少,这题正好用RMQ求任意两个后缀之间的最长公共前缀,所以自己就拿这题练手了,虽然T了,但是倍增的算法和DC3的算法都贴上...
分类:
其他好文 时间:
2014-09-03 22:44:57
阅读次数:
365
题目链接:uva 12338 - Anti-Rhyme Pairs
题目大意:给定若干个字符串,每次询问两个字符串的最长公共前缀。
解题思路:本来应该将每个字符串连接起来做后缀数组,但其实可以直接把一个字符串看成是一个字符,然后排序了就对应是SA数组,然后处理height即可。然后根据后缀数组的性质,字符串i和j的最长公共前缀长度即为rank[i]+1~rank[j]之间height的...
分类:
其他好文 时间:
2014-09-02 22:54:05
阅读次数:
292
题目:
Write a function to find the longest common prefix string amongst an array of strings.
解析:求字符串数组中所有数组的最长公共前缀,重点考察细节和边界条件,比如:
[] :输入字符串数组为空,要判断if (strs .size() == 0) ...
分类:
其他好文 时间:
2014-08-28 17:02:31
阅读次数:
253