我是真没想到,昨天武理校赛第一次在正式赛过了字符串高阶题心血来潮写了篇题解;今天武大省赛字符串没过而且打得极其绝望,现在来写反思…
一开始想到分两种情况考虑:一是翻转的子串在中心点的一边,二是翻转的子串跨越了中心点
接下来我会用上升或下降的线表示回文 or 相同的串,如
情况一:
首先中间那部分和两端的必须是回文的,然后如果翻转后变成了回文串,那翻转的串和其关于中心点对称的那部分是相同的。官方题解里说的 APA的情况
情况二:
图有点缭乱,可以看出来这就是官方题解里说的 PAA 的情况,翻转的串里是 PA,还有个 A跟在后面
然后?然后就没了
想了半天怎么用SA+LCP求这玩意,但是加上反转串跑高度数组也是不好求的。当时怎样想都要确定两个边界,复杂度就是 n 2 n^2 n2
一开始也确实有想到去掉两端对称相同的部分,然后接下来不对称的地方肯定要翻转,CF上就有很多这样的字符串思维题。
但是捏,我当时想着翻转的串可能包含了两端相同的部分,去掉了两端相同的部分后,就不能通过翻转这个串来使整个字符串为回文了。
先看下情况一:
所以这种情况下这个子串两端是个回文,啊呸,对称相等。再看虚线内的部分,其实我只用翻转虚线内的就行了。
情况二的也是同理,像这样画图也可以画出来,但我就不事后假努力PPT作图了。睡了睡了
官方题解:
只能说自己太自以为是了,觉得学了SA和SAM后自己字符串还行,然后今天稍微有点思维直接GG。