EVERYTHING HAPPENS FOR THE B|

wnsyou

园龄:2年4个月粉丝:19关注:16

2024-07-21 22:22阅读: 26评论: 0推荐: 0

字符串进阶(自动机,失配树)

自动机

automata.pdf

OI-wiki Link

自动机的引入

自动机是一个数学模型,不是算法也不是数据结构。OI 所说的「自动机」一般都指「确定有限状态自动机(DFA)」。

自动机的工作方式和流程图类似,不同的是:自动机的每一个结点都是一个判定结点;自动机的结点只是一个单纯的状态而非任务;自动机的边可以接受多种字符。

例如:用自动机解决判断二进制数是否为偶数时,你可以从高位往低位处理,根据每一位是 0 还是 1 处理答案

判断二进制数是否为偶数的自动机

在某些情况下看起来挺废物的作用不明显,但处理一些特定问题时会很方便。

自动机的形式化定义

  • 字符集():非常重要,自动机只能处理这些字符,要仔细读题。
  • 状态集合(Q):如果将 DFA 看作一张有向图,那么 DFA 的状态就是图上的节点。
  • 起始状态(s):自动机的初始状态,例如上文的自动机起始状态就是偶数。
  • 接受状态集合(F):特殊的状态,详细见下文。
  • 转移函数(δ):非常重要,它接受一个状态和字符集内的一个字符,返回一个状态。

当 DFA 读入一个字符串时,其会从起始状态开始按照转移函数一个个地处理字符转移。若读入完一个字符串后停留的状态属于接受状态集合,则称 DFA 接受这个字符串,否则成为 DFA 不接受这个字符串。

若一个状态 v 没有字符 c 的转移,则 δ(v,c)=nullnull 只能转移到 null,且 null 不属于接受状态集合。简而言之,null 代指所有无法转移到任何一个接受状态的状态。

例如一个只接受字符串 aabaac 的 DFA如下:

(图片来源于 OI-wiki)红色节点代表接受状态

KMP 自动机

OI-wiki Link

快速回顾:KMP

nxt[0][t[1] - 'A'] = 1;
for (int i = 1; i <= m; i++) {
for (int j = 0; j < 26; j++) {
if (i < m && j + 'A' == t[i + 1]) {
nxt[i][j] = i + 1, p[i + 1] = nxt[p[i]][j];
} else {
nxt[i][j] = nxt[p[i]][j];
}
}
}

推荐习题:Prefix Function Queries

失配树

string_plus.pdf

快速回顾:失配树

失配树,即一棵利用失配数组建出来的树,树上一个节点 i 的父亲为 nxti

性质

  • 树上的两个节点 x,y 的 LCA 就是 pre(s,x)pre(s,y) 的最长公共 Border。
  • 一个前缀的所有 Border 都对应其在失配树上的一个祖先节点。
  • 一个前缀在串中每一次出现都对应其在失配树上的节点的子树范围内的一个节点。

习题

模板题:P5829 【模板】失配树

习题:CF432D Prefixes and Suffixes(利用性质 3) | P2375 动物园(利用性质 2,倍增查找)

本文作者:wnsyou の blog

本文链接:https://www.cnblogs.com/wnsyou-blog/p/18289314/string_plus

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wnsyou  阅读(26)  评论(0编辑  收藏  举报
  1. 1 勝利への道 安藤浩和
  2. 2 Minecraft’s End Eric Fullerton
  3. 3 月光曲完整版 贝多芬 云熙音乐
  4. 4 平凡之路 (Live版) 朴树
  5. 5 Minecraft C418
  6. 6 Paradise NiziU
  7. 7 叫我,灰原哀 龙大人不喷火
  8. 8 心机之蛙,一直摸你肚子 ——《名侦探柯南》原创同人曲 炊饭,叶辞樱,温海,寒砧,南柯柯,小茜玛姬,盛姝,阿崔Ac,贝壳初,千湛,兮茶子DaYu,乔慕,黎鹿北,起千温卿,遮阳伞,曲悠
  9. 9 战 歌 此去经年
叫我,灰原哀 - 龙大人不喷火
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 龙大人不喷火

作曲 : 纯哲不咕咕

编曲 : REVIVAL MUSIC

和声编写 : 胡佳弈

音源:灰原哀

这位就是从今天起要跟大家一起念书的灰原哀同学

什么嘛 摆一张臭脸

她好冷淡哦

我想她一定是紧张啦

我是海底逃出的鲨鱼

请多指教

不太礼貌 给你们警告

有我朋友出现的地方都会有人死掉

奇妙的 营造了

名侦探的名号

情报 是我 发出的信号

帮他 抓住这病号

就是 杀戮的殉道 者

你是否听到了

滴滴滴滴 炸弹的声音

听清叮咛 灵光乍现的分析 一半都靠我

当然不是小女孩 数理化信手都拈来

可御可萝不可得的女天才

丢失的挂件 达咩哟

抽丝的毛线 达咩哟

就拜托你帮忙开门 该死的静电 达咩哟

过时的行头 达咩哟

车内的停留 达咩哟

当爹当妈一级怪人 可怜的琴酒 达咩哟

重新开始希望也不会属于我

就像地平线送来朝阳又等待日落

天空走漏风声让我时刻保持沉默

黑色子弹划过 沉入夜色如墨

或许只有更沉的夜才更适合烟火

当我仰望天空在我眼中映下星河

这盛大的绚烂让我不再逃避闪躲

当我看向身侧 并非孤身一个

出谋划策 找寻下落

由我负责其中大多 数

小女孩也该有的酷

只有我能秀得住

就微笑看他 mz 枪发射

少年侦探队的家伙

或许应该对他们说

我的朋友 阿里嘎多

Baby 叫我 灰原哀

女孩心思 会难猜

我从反派反外 正义的板块 幕后的凶手被掩盖

就让我静静地等待着绯色的子弹壳穿过了他的胸膛

到最后那一刻或许我长大了不适合停留在谁的身旁

这些不会改变我

从来学不会软弱

看我 微笑的弧度 表演的无助

吸引更多人反侧

把你拐到梦想国度看焰火

我才是最完美的罪犯没有留下线索

丢失的挂件 达咩哟

抽丝的毛线 达咩哟

就拜托你帮忙开门 该死的静电 达咩哟

过时的行头 达咩哟

车内的停留 达咩哟

当爹当妈一级怪人 可怜的琴酒 达咩哟

重新开始希望也不会属于我

就像地平线送来朝阳又等待日落

天空走漏风声让我时刻保持沉默

黑色子弹划过 沉入夜色如墨

或许只有更沉的夜才更适合烟火

当我仰望天空在我眼中映下星河

这盛大的绚烂让我不再逃避闪躲

当我看向身侧 并非孤身一个

命运的天平我早就被放入了一边的托盘

另一边是药物枪火还有一把多兰

这首歌就要播完 或许不该有遮拦

最后一句就像生命我选择押在了柯南

嗯哼 我乱说的 干嘛这么认真啊

加载中…

{{tag.name}}

{{tran.text}}{{tran.sub}}
无对应文字
有可能是
{{input}}
尚未录入,我来提交对应文字
评论
收藏
关注
推荐
深色
回顶
收起
点击右上角即可分享
微信分享提示