ARC141F Well-defined Abbreviation 题解
ARC141F Well-defined Abbreviation 题解
考虑什么时候回存在不同的操作序列导致得到不同的字符串?
必然存在一个时刻满足能消掉两个相交的子串。
也就是说如果存在两个字符串\(s_i,s_j\),对应子串\([l_1,r_1],[l_2,r_2]\),且\(l2\in[l1,r2],r1\in [l2,r2]\),或者\([l1,r1]\subset[l2,r2]\)或者\([l2,r2]\subset[l1,r1]\)
同时除去相交的部分,剩下的部分不同。
但是如果剩下的部分都可以通过一些删除子串的部分删掉,就任然是好的。
可以得到最后的结论:
对于一个串\(s_i\),如果\(s_i\)可以通过若干次操作变成空,则不考虑。(操作顺序不重要,因为假定\(s_i\)是好的)
对于其他的串必须满足两两除去交后相同。
这两个部分都可以通过ac自动机完成,时间复杂度\(O(\sum|s_i|)\)。