ICM Technex 2018 and Codeforces Round #463-- G、Palindrome Partition(回文自动机)

该博客主要介绍了ICM Technex 2018竞赛中的一道关于回文划分的问题。博主探讨了如何将一个字符串分成偶数段,使得每一段的首尾相等,并且转换为回文串的问题。通过建立回文树,博主分析了利用失败链接优化暴力解法的时间复杂度,从O(n^2)降低到O(nlogn),并给出了优化后的代码实现。
摘要由CSDN通过智能技术生成

题目链接

题面:
在这里插入图片描述

题意:
给定一个字符串,把字符串分为偶数段,假设分为了 k k k段,那么需要满足 s 1 = s k , s 2 = s k − 1 . . . s_1=s_k,s2=s_{k-1}... s1=sk,s2=sk1...
求符合要求的划分的方案数。

题解:
我们假设原串为 S S S,长度为 n n n

假设现在有两段 s i , s k − i + 1 s_i,s_{k-i+1} si,ski+1,其中 s i = s k − i + 1 = x 1 x 2 . . . x j s_i=s_{k-i+1}=x_1x_2...x_j si=ski+1=x1x2...xj

假设 S i S_i Si的起始位置为 p p p,那么有:
s i = S [ p ] S [ p + 1 ] . . . S [ p + j − 1 ] s_i=S[p]S[p+1]...S[p+j-1] si=S[p]S[p+1]...S[p+j1]

s k − i + 1 = S [ n − j − p + 2 ] S [ n − j − p + 2 ] . . . S [ n − p + 1 ] s_{k-i+1}=S[n-j-p+2]S[n-j-p+2]...S[n-p+1] ski+1=S[njp+2]S[njp+2]...S[np+1]

对应相等关系即: S [ p ] = S [ n − p − j + 2 ] S[p]=S[n-p-j+2] S[p]=S[npj+2]

我们令 p = 1 p=1 p=1,那么有 S [ 1 ] = S [ n − j + 1 ] S[1]=S[n-j+1] S[1]=S[nj+1]

那么假设我们现在有一个串 T T T

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值