回文自动机 笔记

本文详细介绍了回文自动机的概念,包括它的基础题型、构建方法和fail指针的证明。通过实例展示了如何构建回文自动机,并探讨了其实现与应用场景,如计算本质不同的回文串个数。

今天日常给同学@CollinGao 写奥♂义。讲到了这个东西,还是挺有用的,就是有点毒瘤?仿佛没什么人知道的亚子。。。

不是很难理解的算法,我在期中考试考场上就直接yy出了一个来。虽然马上CSP了,但是我还是准备来颓废,写写这篇奥♂义。

基础题型

给你一个字符串,对于每个前缀,求该前缀中有多少前缀不同的回文子串。定义一个回文子串的权值为:长度乘以出现次数。对于每个前缀,也请你求出最大的回文子串的权值是多少。

回文自动机(又名回文树)是干啥的

大家都知道TRIE树(知道即珂,但是如果连听说都没听说过,那劝退了)。在TRIE树上,每个节点表示一个字符串,字符记录在边权上。连一条边表示在这个字符串后面加上一个字符。

那么,回文自动机是怎么弄的的?连一条边,表示在这个字符串前后各加上一个字符。比如某个父亲的字符串为"aba",连了一条权值为’c’的边到儿子,儿子的字符串就是"cabac"。

然后要注意一点,回文自动机有两个根。其原因很显然,因为一个父亲以下的字符串长度的奇偶性不会改变。所以,两个根分别记录奇数长度和偶数长度的回文串,名字就叫奇根和偶根。偶根很好理解,表示一个空串,其长度为 0 0 0。那么,奇根怎么办呢?仔细一推,单个字符长度为 1 1 1,其父亲的长度为其长度 − 2 -2 2,也就是说,奇根表示的字符串长度为 − 1 -1 1?!

没事, − 1 -1 1 − 1 -1 1,只不过是为了方便计算罢了。实际实现中,考虑到空间问题,我们并不会实际记录表示的字符串,只是记录一个长度 l e n len len。那么,只要让这个点的 l e n = − 1 len=-1 len=1即珂,一点问题都没有。

fail指针

精髓(准确来讲,是每个自动机的精髓)。对于一个节点,它的 f a i l fail fail指针是指:除了自己之外,LPS(Longest Palindrome Suffix,最长回文后缀)所对应的点。
如果你仔细咀嚼了这句话,那么你会想这样一个问题:除了自己之外的最长回文子串一定在树上能找到吗?

证明fail一定在树上能找到

(如果您能自己证明,请跳过这段)
设当前节点表示字符串 s s s f a i l fail fail指向的节点所对应为 f f f f t f^t ft表示把 f f f反过来, ∣ f ∣ |f| f表示 f f f的长度,如图所示。

由于 S S S是回文串(根据定义), S S S的前缀 ∣ f ∣ |f| f个字符串和后缀 ∣ f ∣ |f| f S S S f f f都是回文的,非常容易证明, S S S ∣ f ∣ |f| f个前缀和这么长的后缀是一样的。
那么, f f f在后面出现一遍,就说明在前面也出现了一遍。由于我们是从前往后加入到树上的,所以这个串一定能找到。

证毕 ■ \blacksquare

如何构建

上面讲了一下,我们是按照从前往后的顺序插入 s s s的每个字符的。对于插入第 i i i

先看效果: https://renmaiwang.cn/s/jkhfz Hue系列产品将具备高度的个性化定制能力,并且借助内置红、蓝、绿三原色LED的灯泡,能够混合生成1600万种不同色彩的灯光。 整个操作流程完全由安装于iPhone上的应用程序进行管理。 这一创新举措为智能照明控制领域带来了新的启示,国内相关领域的从业者也积极投身于相关研究。 鉴于Hue产品采用WiFi无线连接方式,而国内WiFi网络尚未全面覆盖,本研究选择应用更为普及的蓝牙技术,通过手机蓝牙与单片机进行数据交互,进而产生可调节占比的PWM信号,以此来控制LED驱动电路,实现LED的调光功能以及DIY调色方案。 本文重点阐述了一种基于手机蓝牙通信的LED灯设计方案,该方案受到飞利浦Hue智能灯泡的启发,但考虑到国内WiFi网络的覆盖限制,故而选用更为通用的蓝牙技术。 以下为相关技术细节的详尽介绍:1. **智能照明控制系统**:智能照明控制系统允许用户借助手机应用程序实现远程控制照明设备,提供个性化的调光及色彩调整功能。 飞利浦Hue作为行业领先者,通过红、蓝、绿三原色LED的混合,能够呈现1600万种颜色,实现了全面的定制化体验。 2. **蓝牙通信技术**:蓝牙技术是一种低成本、短距离的无线传输方案,工作于2.4GHz ISM频段,具备即插即用和强抗干扰能力。 蓝牙协议栈由硬件层和软件层构成,提供通用访问Profile、服务发现应用Profile以及串口Profiles等丰富功能,确保不同设备间的良好互操作性。 3. **脉冲宽度调制调光**:脉冲宽度调制(PWM)是一种高效能的调光方式,通过调节脉冲宽度来控制LED的亮度。 当PWM频率超过200Hz时,人眼无法察觉明显的闪烁现象。 占比指的...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值