讨论一下2018南京的M.Mediocre String Problem

快12点了= =。

实在是忍不住想切这题,写个博客记录一下思路明天再搞(虽然这篇博客过了审核的时候我应该又开始搞了)。

题目简化后是这样的,给两个串s和t,求从s中取一个子串与t的一个前缀连接后能组成回文串的个数,但是要求从s中取的子串长度要大于所选择的t的前缀。

一开始漏看了后半段的条件…一想这不是sam的裸题吗,s串倒着建sam,然后t串进去走,走不动了就立马停,接着ringt集合大小搞一通。

然后一看样例不对…这样例一(s = ababa,t = aba)怎么是个5啊。

然后再一看要求取的子串必须大于取的前缀…

又一想不对啊…就算没有这个条件也要考虑中间的回文,有了这个条件反而简单了。

那正确的思路应该是,取的子串的左边倒过来与t中取的前缀相匹配,然后中间夹着一个回文串。

那么第一步毫无疑问是…处理出s串中所有回文串的位置。

怎么处理呢…manacher或者回文树吧,sam应该也可以直接处理出回文串,在2015年张天扬的国家集训队论文里见过这种操作。

不会,告辞.jpg,我只会用回文算法求回文。

嗯…之后呢,之后该怎么办…

匹配位置加前一个位置(倒着来的嘛)的回文串个数…

啊写不下去了写不下去了再写门禁了明天再搞。

2018.10.15日中午:
我写完了…
应该没问题吧…

你可能感兴趣的:(ACM,后缀自动机,回文树)