ACM 字符串
文章平均质量分 51
嚜寒
盖士人读书,第一要有志,第二要有识,第三要有恒。
有志则不甘为下流;
有识则知学问无尽,不敢以一得自足,如河伯之观海,如井蛙之窥天,皆无识者也;
有恒则断无不成之事。
展开
-
POJ2774 后缀数组,求两个字符串的最长公共子串
1 学习别人的模板 (注意,len是字符串实际长度(不补0的情况下):sa[],下标是该后缀的名次(1到len),值是该后缀的首字符在字符串中的位置(0到len-1);rank_[],下标是该后缀首字符在字符串中的位置(0到len-1),值是该后缀的名次(1到len);heigh[],下标是该后缀的名次(1到len),值是sa[i]与sa[i-1]的公共前缀长度,且heigh[1]是第一名次的后原创 2016-10-18 23:16:13 · 474 阅读 · 0 评论 -
kmp, next 数组
1) poj1961 #include char s[1000005]; int num[1000005]; int main() { int n,case1=1; while(scanf("%d",&n),n) { scanf("%s",s); int j=-1; num[0]=-1; for(int原创 2016-10-04 20:48:00 · 261 阅读 · 0 评论 -
后缀数组
0) 1)后缀数组,倍增算法(介绍了 后缀数组sa,名次数组rank_,以及heigh数组) #include #include #include ///NOTE! 约定在此处注释中的n是字符串实际长度的情况下(不补0):sa[],下标是名次(1到n)值是该后缀的首字符在字符串中的位置(0到n-1);rank_[],下标是该后缀首字符在字符串中的位置(0到n-1),值是该后缀的名次(1到原创 2016-05-28 21:28:26 · 262 阅读 · 0 评论 -
POJ3080 基本字符串库函数的应用 ..Brute Force/朴素模式匹配算法
1 题意: 寻找最长公共子串。 2分析: 头文件下: a.strncpy() b.strstr() c.strcpy() 3 #include #include #include #include using namespace std; const int maxn=16; char str[maxn][100]; char sub_str[100]; char lon原创 2016-11-11 19:25:23 · 262 阅读 · 0 评论 -
POJ3461 字符串之模式匹配,kmp,求目标串中有多少个位置可重叠的子串
1题意。 求目标串中有多少个位置可重叠的子串。 2分析。 裸的kmp。 3代码 //在目标串中找有多少个子串,出现的子串在位置上上可以交叠 #include #include #include #include using namespace std; const int w_maxn=10010; const int t_maxn=1000010; char word[w_maxn]原创 2016-11-12 00:56:43 · 456 阅读 · 0 评论 -
POJ2408 模拟排序、char[]操作、利用hash优化
1 题意 给定若干个字符串,将其分组,按照组成元素相同为一组,输出数量最多的前5组,数量相同的输出字典序较小的一组,每组按照字典序输出所有字符串,不输出重复的字符串。 2 分析 主要用到了strcmp()、strncpy()或者strcpy()、sort。 应该加hash优化,明天再补。 代码二 没有优化的。 3 代码二 #include #include #include原创 2016-11-14 23:23:13 · 417 阅读 · 0 评论 -
【留坑】 POJ2503 注意输入输出&&几种数据结构的复习、比较(线性表建立的字典 || 树建立的字典_即Trie || hash || map)
1 题意 2 分析 (上限,3000ms) 1)代码一,map,G++,1700ms~2500ms ①注意map不能将char数组作为关键字或者映射值,除非重载 ②gets(temp)会读入空白行,内部是通过temp[0]=='\0'来判断,是不是空白行,如果是就不会输出,我们同样可以用这一点,来区别两组用空白行分割的输入。 ③因为map的未插入的key-值,其由于初始化而对应的值是n原创 2016-11-26 21:46:41 · 730 阅读 · 0 评论 -
UVALive 3942 Trie+dp,白书P209
1 Note: ①node[maxn][27]、val[maxn],maxn应该远大于存放进该字典树的单词数量,因为Trie的叶子结点数量就已经等于单词数量了。(出现Runtime有可能就是因为数组不够大,程序越界了) ②strlen()比较耗费时间,尽量减少它的使用次数,比如在insert()每一个单词时可以用,而在对于整个长字符串时用一次strlen()得到一个全局变量len即可(否则如原创 2016-10-09 17:41:11 · 337 阅读 · 0 评论 -
UVA671 模拟,字符串检查
1题意 先给出一些单词构成词典,然后检查所给字符串,是否字典中的单词,如果是则输出“is correct”,或者检查是否满足下面三个条件之一,如果是,那么按输入顺序,输出字典中所有满足条件的单词: 是词典中某个单词中某个字母被替换成另一个字母而得到 是词典中某个单词增加一个字母而得到 是词典中某个单词减少一个字母而得到 2 分析 1)UVA、POJ同样的题目,UVA好像会增加格式要求啊原创 2016-11-27 21:48:55 · 383 阅读 · 0 评论