​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,不会出界