题目描述
数据范围100000
算法讨论
对于前两种情况,马拉车即可
对于第三种情况,我们考虑枚举这个回文串的中点位置。
首先中点位置在它所在的串上肯定往两边扩展越长越好,这个我们用马拉车的rad数组已经处理好。
这时候回文串要加长的话,以中点在A上x位置为例,肯定在A的$x-rad[x]$位置起左侧和B的$x+rad[x]-2$位置起右侧,这个我们二分+HASH判定即可
1 |
|
May the force be with you
数据范围100000
对于前两种情况,马拉车即可
对于第三种情况,我们考虑枚举这个回文串的中点位置。
首先中点位置在它所在的串上肯定往两边扩展越长越好,这个我们用马拉车的rad数组已经处理好。
这时候回文串要加长的话,以中点在A上x位置为例,肯定在A的$x-rad[x]$位置起左侧和B的$x+rad[x]-2$位置起右侧,这个我们二分+HASH判定即可
1 | #include <stdio.h> |