「SDOI2017」文本校正

题目
分类讨论六种排列:
A B C : ABC: ABC一次哈希判断。
C A B : CAB: CAB枚举 C C C的长度,总共 n n n次哈希判断。
B C A : BCA: BCA枚举 A A A的长度,总共 n n n次哈希判断。
C B A : CBA: CBA构造新串 P = s 1 t n s 2 t n − 1 . . . s n t 1 P = s_1t_ns_2t_{n-1}...s_nt_1 P=s1tns2tn1...snt1
那么问题转化为将 P P P划分为 3 3 3个偶回文串。
枚举第一个回文串的位置 [ 1....2 x ] [1....2x] [1....2x],那么就相当于判断 [ 2 x + 1...2 n ] [2x+1...2n] [2x+1...2n]是否是双偶回文串,也就是判断它是否能分成两个偶回文串。
这个是在《字符串算法选讲 金策》中的经典问题:
在这里插入图片描述
在这里插入图片描述
它的意思是对于任意一个可以是双回文串的串,对于一种双回文划分 y 1 + y 2 = s y_1+y_2 = s y1+y2=s,只要有一个回文前缀的长度 > y 1 > y_1 >y1(上面的证明显然需要 ∣ v ∣ > 0 |v| > 0 v>0),那么对于所有长度 ≥ y 2 \geq y_2 y2的回文后缀, s s s去掉它之后的串(是 s s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值