UVA 12206 - Stammering Aliens(后缀数组)】的更多相关文章

UVA 12206 - Stammering Aliens 题目链接 题意:给定一个序列,求出出现次数大于m,长度最长的子串的最大下标 思路:后缀数组.搞出height数组后,利用二分去查找就可以 这题之前还写过hash的写法也能过,只是写后缀数组的时候,犯了一个傻逼错误,把none输出成node还一直找不到...这是刷题来第二次碰到这样的逗比错误了,还是得注意. . 代码: #include <cstdio> #include <cstring> #include <alg…
Dr. Ellie Arroway has established contact with an extraterrestrial civilization. However, all efforts to decode their messages have failed so far because, as luck would have it, they have stumbled upon a race of stuttering aliens! Her team has found…
基于hash的LCP算法: #include<cstdio> #include<cstring> #include<algorithm> #define maxn 40010 using namespace std; ; int n,m,pos; unsigned long long h[maxn],xp[maxn],hash[maxn]; int rank[maxn]; bool cmp(const int &a,const int &b) { ret…
UVA 10526 - Intellectual Property 题目链接 题意:给定两个问题,要求找出第二个文本抄袭第一个文本的全部位置和长度,输出前k个,按长度从大到小先排.长度一样的按位置从小到大 思路:后缀数组,把两个文本拼接起来.记录下拼接位置为tdp.这样假设sa[i] < tdp就是前面的文本开头.假设sa[i] >= tdp就是后面的文本开头,拼接起来的求出height数组,利用该数组的性质.从前往后扫一遍,从后往前扫一遍.把全部位置的最大值保存下来.最后在扫描一遍位置.把答…
题意:有F个单词,1 <= F <=60 , 长度<=10^4, 每次可以输入一个字符串,所有包含该字串的单词会形成一个集合. 问最多能形成多少个不同的集合.集合不能为空. 分析:用后缀数组处理.然后首先考虑一个单词形成一个集合的情况,若该单词是其他单词的字串,则该单词显然不会形成一个集合,那么利用后缀数组, 对于每个单词看能否与其他单词有LCP,且LCP 长度为该单词本身长度. 然后就是多个单词形成集合的情况:比较简单的处理方式就是将h数组值相同的下标集中存储,比如h[x] = h[y…
相同的题目,输出格式有区别. 给定n个字符串,求最长的子串,使得它同时出现在一半以上的串中. 不熟悉后缀数组的童鞋建议先去看一看如何用后缀数组计算两个字符串的最长公共子串 Ural1517 这道题的思路也是基本相同的,都是利用了后缀数组的良好性质. #include <iostream> #include <cstring> #include <cstdio> using namespace std; const int MAX = 100500; const int…
UVA 12338 - Anti-Rhyme Pairs 题目链接 题意:给定一些字符串,每次询问求出两个字符串的最长公共前缀的长度 思路:把字符串排序,就能求出height和rank数组,然后利用RMQ查询就可以 代码: #include <cstdio> #include <cstring> #include <iostream> #include <string> #include <algorithm> using namespace s…
题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向前延伸lcp1,一个向后延伸lcp2,然后加起来,要保证每个都不超过L,否则就会重复,然后个数就是 lcp1+lcp2-L. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio&…
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=4080 Description Dr. Ellie Arroway has established contact with an extraterrestrial civilization. However, all efforts to decode their messages have failed so far because, as luck would have it, the…
题意:找一个出现了m次的最长子串,以及这时的最右的位置. hash的话代码还是比较好写的,,但是时间比SA多很多.. #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; + ; typedef long long ll; ; ; char s[N]; int m,len,pw[N]; int H[N],pos; struct node { int id,hash…