其他分享
首页 > 其他分享> > 「ARC 058」 F Iroha Loves Strings

「ARC 058」 F Iroha Loves Strings

作者:互联网

传送门

考虑一次加入每个字符串,维护可能成为答案的字符串集合 \(S\)。

当 \(s < t\),并且 \(s,t\) 不为包含关系,且都能凑成答案,那么 \(s\) 一定比 \(t\) 优。

预处理出每个位置 \(i\) 上已经有 \(j\) 个长度,之后是否能凑完。

容易发现 \(S\) 中字符串均是一个字符串的前缀。

加入当前字符串时,新的集合一定是原来集合的前缀再加上或者不加新的字符串。

先将候选前缀按长度压入栈中,再把非前缀的新串按长度从小到大加入栈中:

字符串的比较,因为只比较两个字符串的前缀组合,可以二分+哈希,也可以用 Z-Function

于是顺道学了 Z-Function,实现跟 Manacher 差不多,都很短小精炼。

代码

标签:Function,前缀,压入,字符串,ARC,058,Iroha,长度,集合
来源: https://www.cnblogs.com/iqx37f/p/14724913.html