UOJ 494

这篇博客深入探讨了反向Lyndon串的概念及其性质,包括反向Lyndon分解、核心(c(s))的定义和重要性。博主通过一个引理证明了特定串的顺序关系,并介绍了利用反向Lyndon串进行串排序的算法,算法时间复杂度为O(nm^2)。此外,博主还讨论了算法的细节,包括如何确定合并顺序以及特殊情况的处理。
摘要由CSDN通过智能技术生成

这是myy出的神仙题,我花了很多天时间才看懂题解。这份题解参考myy的官方题解yhx的题解,大概算是后者的详细证明版本。
我们接下来的定义都是在一个特殊的字典序意义下的,也就是一个串的前缀大于自身(也可以理解为给每个有限长字符串最后加一个 U \tt{U} U,然后在通常字典序意义下比较)。另外我们定义两个字符串的严格 < < <与严格 > > >,字符串 s s s严格 < t <t <t意味着存在位置 i > 0 i>0 i>0,使 s [ 1 … i − 1 ] = t [ 1 … i − 1 ] s[1\ldots i-1]=t[1\ldots i-1] s[1i1]=t[1i1],且 s [ i ] < t [ i ] s[i]<t[i] s[i]<t[i],严格 > > >反过来。
这样我们可以定义反向lyndon串。一个串是反向lyndon串当且仅当它的所有后缀都 < < <它(显然是严格 < < <)。定义一个串 s s s的反向lyndon分解是 s = s 1 + s 2 + … + s l s=s_1+s_2+\ldots+s_l s=s1+s2++sl,其中 s 1 ≤ s 2 ≤ . . . ≤ s l s_1\leq s_2\leq ... \leq s_l s1s2...sl,可以发现反向lyndon分解是良定义的,它具有和一般的lyndon分解类似的性质,例如存在且唯一。例如,串 A A C A \tt{AACA} AACA的反向lyndon分解是 A + A + C A \tt{A}+\tt{A}+\tt{CA} A+A+CA
下面给出一个重要引理:对于一个反向lyndon串 s s s,若取 k k k(可以为 ∞ \infty )个串 t 1 , t 2 , … t k > s t_1,t_2,\ldots t_k>s t1,t2,tk>s,则 t 1 + t 2 + … t k > s t_1+t_2+\ldots t_k>s t1+t2+tk>s,且若 ∣ t 1 ∣ + ∣ t 2 ∣ + … ∣ t k ∣ ≥ ∣ s ∣ |t_1|+|t_2|+\ldots |t_k|\geq |s| t1+t2+tks,这里的 > > >为严格 > > >。证明思路是设 l i = ∣ t 1 ∣ + ∣ t 2 ∣ + … ∣ t i ∣ l_i=|t_1|+|t_2|+\ldots|t_i| li=t1+t2+ti,假设 l i − 1 < ∣ s ∣ l_{i-1}<|s| li1<s,若 l i < ∣ s ∣ l_i<|s| li<s,则 s [ l i − 1 + 1 … l i ] ≤ s [ 1 … ∣ t i ∣ ] ≤ t i s[l_{i-1}+1\ldots l_i]\leq s[1\ldots |t_i|]\leq t_i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值