Link
设 w = n − k 2 w=\frac{n-k}{2} w=2n−k,如下构造可保证一定有解
[w个1+1个0] [w个1+1个0] ..... [w个1+1个0] [若干个1]
①.存在长度为k的子串满足仅出现过一次
因为 s [ l + 1..... n − l ] s[l+1.....n-l] s[l+1.....n−l]是一个长度为 k k k的子串,且仅出现过这一次
因为这个子串以 0 0 0开头,下一次 0 0 0至少要在 s 2 w + 2 s_{2w+2} s2w+2出现,然而以这个位置开头的子串已经容不下长度为 k k k的子串了
因为 2 w + 2 + k = n + 2 > n 2w+2+k=n+2>n 2w+2+k=n+2>n
②.满足长度小于k的子串出现次数至少是两次
对于一个长度小于 k k k的子串,设其长度为 t t t
考虑在原串中的位置为 z z z,若 z > w + 1 z>w+1 z>w+1,那么把这个串左移 w + 1 w+1 w+1肯定可以找到一个相同的子串
若 z < = w + 1 z<=w+1 z<=w+1,把这个串右移 w + 1 w+1 w+1肯定可以找到一个相同的子串且不会出界
因为 z + w + 1 + ( t − 1 ) < = 2 w + 2 + ( k − 2 ) = n z+w+1+(t-1)<=2w+2+(k-2)=n z+w+1+(t−1)<=2w+2+(k−2)=n,不会出界