algorithm_字符串
文章平均质量分 77
theArcticOcean
Website: https://www.weiy.city
Wechat Subscription Account: 胡桃小院
展开
-
hdu 1004 Let the Balloon Rise(trie||映射统计)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1004给出一定数量的字符串,求出出现次数最多的字符串。统计字符串可以用字典树,我用trie做运行了15MS。#include #includeusing namespace std;typedef struct node{ int num; bool fin; struc原创 2015-07-13 14:30:41 · 564 阅读 · 0 评论 -
hdu 3341 Lost's revenge(dp+Ac自动机)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3341Lost's revengeTime Limit: 15000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 3369 Accepted Submi原创 2015-08-14 09:12:33 · 701 阅读 · 0 评论 -
AC自动机初识&hdu 2222 Keywords Search
AC自动机:Aho-Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。AC自动机的核心:字典树(trie树),KMP模式匹配算法,BFS(因为是多模匹配)。首先构造一颗trie树,再在trie树上制作fail指针(用到了temp指针尝试是否fail),有了这样的数据结构作为基础后就能用KMP算法的思想来查找目标串。最后用BFS来统计匹配的串的个原创 2015-07-30 10:45:33 · 749 阅读 · 0 评论 -
zoj 3228 Searching the String(trie)
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3441看见它我就知道要用到AC,但是用经典的AC耗内存啊。而且还要求求出子串重叠的出现次数和不能重叠的出现次数两种情况。先给出的是源码串,再给出子串看有木有,输出出现的次数。所以先把源码插入tree中,然后统计能够重叠的情况和不能重叠的情况,并把信息存储起来,最后依原创 2015-07-31 09:37:23 · 655 阅读 · 0 评论 -
AC自动机训练(16.04.01)
复习了AC自动机,记录几题,虽然有些之前做过,但是这次又写了一遍后感觉有了新的认识(以前写的不好的直接删除了 ^_^)。对了外加一道和AC自动机没有半毛钱关系的模拟题。 hdu 2222 Keywords Search hdu 2896 病毒侵袭 zoj 3228 Searching the String hdu 2778 LCR (模拟题)hdu 2222 Keywords Searchh原创 2016-04-01 16:38:18 · 636 阅读 · 0 评论 -
KMP训练五题
再次学习KMP,关于字符串的许多东西快忘光了,惭愧。这次训练5道题,分别是: hdu 3336 Count the string (理解) hdu 4763 Theme Section (理解) hdu 2594 Simpson’s Hidden Talents (合并串) hdu 3746 Cyclic Nacklace (最小循环节) zoj 3587 Marlon’s String原创 2016-03-25 21:42:45 · 802 阅读 · 0 评论 -
poj 2752 Seek the Name, Seek the Fame(KMP)
题目:http://poj.org/problem?id=2752大意就是求解给定字符串的所有前缀-后缀字符串(比如alala的前缀-后缀串是a,ala,alala),按照长度升序输出length。正确理解了KMP的原理和精华解决这个问题是不难的。首先,一个字符串本身是它的最大前缀-后缀。接着,前缀函数得到的next[len]就是第二长的前缀-后缀串,next[next[len]]则是第二原创 2015-07-08 22:24:37 · 497 阅读 · 0 评论 -
回文子串算法——Manacher学习
首次学习manacher算法,感谢分享优秀博文的博主: http://blog.csdn.net/xingyeyongheng/article/details/9310555 读完后,我对其有了大体的认识。经过manacher算法处理后的字符串,其内容完全改变。比如字符串212: 设p[i]是i位置处向外拓展的半径。 after the change, it’s type conte原创 2016-04-13 19:47:09 · 617 阅读 · 0 评论 -
后缀数组学习
相关学习资料:《后缀数组——处理字符串的有力工具》、《后缀树》(http://wenku.baidu.com/link?url=c5DBWJ9b6UNTzV6uxvQZuPerd4FSOWFWpt8ekWcsgyLXT7LZcy4aKlpI5QZ5fdO8SIGqQDVPlXmIBnbRur0ZWHpmvYTJvmC_r8KWoQ-LWxq)后缀数组SA: 保存1..n 的某个排列SA[1],SA[原创 2016-05-07 19:36:14 · 949 阅读 · 0 评论 -
manacher练习 (16.04.23)
继续上次的故事,又做了三道回文字符串的题,记录下来,当然他们不是都非得用manacher,使用KMP也能解决。hdu 3068 最长回文http://acm.hdu.edu.cn/showproblem.php?pid=3068 大意:求出求出最长回文子串的长度 分析:简单模板题code: #include <iostream>#include <cstdio>#include <cstri原创 2016-04-23 21:49:10 · 817 阅读 · 0 评论 -
hdu 3065 病毒侵袭持续中(AC automaton)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3065每个子串是不同的,求出在源码串中各个子串出现的次数,按照输入子串的顺序将出现次数大于0的输出。例如:Sample Input3AABBCCooxxCC%dAAAoen....END Sample OutputAA: 2CC: 1Hin原创 2015-07-30 19:27:55 · 706 阅读 · 0 评论 -
poj 2503 Babelfish(字典树·翻译)
题目:http://poj.org/problem?id=2503Language:DefaultBabelfishTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 37107 Accepted: 15811Description原创 2015-08-30 20:44:09 · 649 阅读 · 0 评论 -
KMP & hdu 1711 Number Sequence
KMP是在传统的简单模式匹配基础上进化来的,通过向右尽量滑动远一点,除去冗余的滑动操作提高效率。更加详细的讲解拜访这位大侠:http://billhoo.blog.51cto.com/2337751/411486/编码实现:#include #include#includeusing namespace std;char str[100];int next[100],le原创 2015-07-08 11:26:16 · 571 阅读 · 0 评论 -
poj 2406 Power String (KMP)
题目:http://poj.org/problem?id=2406简单的讲就是找出用多少个最小的子串可以组成给定的字符串。这还是用到了KMP里的前缀-后缀特征,next[len]就是最大的前缀-后缀子串长度。#include #include#includeusing namespace std;const int maxn=1e6+5;char str[maxn];int原创 2015-07-09 09:13:37 · 469 阅读 · 0 评论 -
hdu 1075 What Are You Talking About (字典树·文字翻译)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1075DescriptionIgnatius is so lucky that he met a Martian yesterday. But he didn't know the language the Martians use. The Martian gives him a原创 2015-08-12 08:52:50 · 1028 阅读 · 0 评论 -
poj 3461 Oulipo(KMP)
题目:http://poj.org/problem?id=3461大意是这样的:在一篇没有空格的文章中找到给定的词,统计出现的次数输出。用KMP求出前缀-后缀编码,将词当做模式串在文章中不断移动寻找相同的词。#include #include#includeusing namespace std;const int maxn1=1e4+5,maxn2=1e6+5;char原创 2015-07-09 10:14:20 · 522 阅读 · 0 评论 -
hdu 1800 Flying to the Mars(字典树||map||hash)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1800给出一堆士兵的等级,等级高的的士兵可以当等级小的士兵的师傅,一个士兵最多一个师傅(可以没有),一个师傅最多1个徒弟(可以没有),如果是师徒关系,可以用一把扫帚练习技能,问:全部士兵都用扫帚练习时需要的最少的扫帚数量?这就是寻找一棵树的最大分支嘛,如果所有的数字均不相同那么必能连成一串,仅需原创 2015-07-13 16:42:23 · 761 阅读 · 0 评论 -
hdu 1671 Phone List(字典树·粉刷式标记)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1671DescriptionGiven a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let’s say the原创 2015-08-12 09:29:55 · 885 阅读 · 0 评论 -
hdu 1251 统计难题(字典树·粉刷式标记)
题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87316#problem/CDescriptionIgnatius最近遇到一个难题,老师交给他很多单词(只有小写字母组成,不会有重复的单词出现),现在老师要他统计出以某个字符串为前缀的单词数量(单词本身也是自己的前缀). Inpu原创 2015-08-11 20:53:13 · 466 阅读 · 0 评论 -
字典树(trie)
字典树(trie)是一种词典的储存结构,它的基本特征:1.除根节点外每个节点都能包含字符。2.从根结点到某一节点,经过路径的所有的字符串起来就是这个节点对应的字符串。3.每个节点的子节点的字符都不一样。字典树的核心思想:用时间换取空间。因为"根结点"的字符就是子树的公共前缀,方便了检索,所以常用于统计和排序大量的字符串(当然不仅仅是字符串)。它的时间复杂度:O(n),空间的复杂度:原创 2015-07-13 11:24:58 · 372 阅读 · 0 评论 -
poj 2185 Milking Grid(KMP)
题目:http://poj.org/problem?id=2185求出最小重复子矩阵的面积。我们知道,一个字符串的最小重复子串长度等于length-next[length],把所有行的最小值不断lcm,就能得到所有最小值的公倍数,也即是w。同理对列进行相应的操作就能得到h。另外由于可以有重叠部分超出原矩阵,所以w=min(w,c),h=min(h,r)。#include #inclu原创 2015-07-09 15:31:11 · 476 阅读 · 0 评论 -
algorithm 题集三 (16.05.24)
练习的故事仍然继续下去,今天写下的题目难度适中,记录自己近段时间的训练成果。涉及数学,动态规划,字符串问题。poj 2159 Ancient Cipher(规律)http://poj.org/problem?id=2159 大意:密码加密方法,两种加密方式,第一种,替换加密:Substitution cipher changes all occurrences of each letter to原创 2016-05-24 23:56:46 · 5442 阅读 · 0 评论