数据结构
konghhhhh
记录自己的学习过程
展开
-
AC自动机初学
ac自动机,用于解决而AC自动机解决的是长文本的多模板匹配问题。而KMP算法专门解决长文本的单模板匹配问题,字典树专门解决单个单词(短文本)多模板匹配问题。所以这里实际上就是KMP+字典树。 首先对于多个短单词,最好的存储办法——字典树。(这里是没有malloc()、free()的模板,几乎一样,只是用结构体的构造、析构函数取代了)。 然后KMP的话,肯定设计到一个ne原创 2018-01-29 15:17:53 · 173 阅读 · 0 评论 -
后缀数组初学
后缀数组是真的难,看了一整天并没有理解掉,不过能用了大概,能用的意思大概就是:跳过理解求后缀数组的深切内涵而直接套用模板,使用后缀数组来解决问题。没错,后缀数组很难,但是用这些论文上的一句话来形容他的话,解决字符串问题的强有力的工具,工具,的意思就是,的精髓在于使用,而不是用什么工具都要造一个。这算是给自己的菜找借口了啦,其实这样说起来是舍本逐末了,偏离了学算法的初衷,真的尽力了,也就理解了大意,原创 2018-02-01 21:21:02 · 294 阅读 · 0 评论 -
字典树(Trie)初学
Trie,字典树,像查字典一样的树。学的时候看好久搞不明白,学会了才知道,树就是树,链表的方式的话,和二叉树啊什么的是一个样子的,另外还有一个静态存储的方法,是开好数组来存的,不太好理解。 把模板贴上:静态模板:#include #includeusing namespace std;const int MAXNode=4000*100+10;const int SI原创 2018-01-23 22:14:23 · 208 阅读 · 0 评论 -
POJ 2778 DNA Sequence (AC自动机+矩阵幂DP)
看完了ac自动机的基本应用题目,进军自动机dp的道路很艰辛,第一个是个自动机+概率dp(UVA 11468),不算难,但是比起基本自动机来,有了新的方向:就是在bfs找失败指针时,遇到now的不存在的i子节点不是直接continue,而是将该子节点只想fail[now]的i子节点(也不存在即指向了0),也就是所谓的吧所有边都连上。 然后,这一类题的意思,大概是给了n个模板,问你任意一个长原创 2018-01-31 17:48:14 · 163 阅读 · 0 评论 -
G - Censored! (自动机dp+大数)
The alphabet of Freeland consists of exactly N letters. Each sentence of Freeland language (also known as Freish) consists of exactly M letters without word breaks. So, there exist exactly N^M differe原创 2018-02-07 21:26:04 · 252 阅读 · 0 评论