「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