这题对我来说难的一批(题意理解错三遍,垃圾翻译,还是英文原题面好)
就是给你
\(2n\)个串,要你找一个区间,使得前
\(n\)个串的这个区间不能和后
\(n\)个串中的区间有任何一个相同,求一个最短长度.
这显然可以二分,不过听取了
\(dalao\)的建议,我选择了枚举左端点,二分右端点的方式.
怎么
\(check\)呢?你把所有串
\(hash\)一下,然后你显然可以任意查询某一个区间的
\(hash\)值.
把后
\(n\)个串的对应区间的
\(hash\)值插入一个
\(set\),直接查询就行了.
\(Code:\) #include #include #include #include #include #include #include #include #include #include #include