CF1158B The minimal unique substring
题目描述
给定一个只包含符号“0”或“1”的字符串 $s$。如果存在某个 $1 \leq l \leq |s| - |t| + 1$,使得 $t = s_l s_{l+1} \ldots s_{l + |t| - 1}$,则称字符串 $t$ 是字符串 $s$ 的一个子串。如果 $t$ 作为 $s$ 的子串仅在唯一的位置出现(即只有一个合适的 $l$),则称 $t$ 是 $s$ 的一个“唯一子串”。
例如,设 $s = $ "1010111"。字符串 $t = $ "010" 是 $s$ 的唯一子串,因为只有 $l = 2$ 满足条件。而 $t = $ "10" 不是唯一子串,因为 $l = 1$ 和 $l = 3$ 都满足条件。又如 $t = $ "00" 根本不是 $s$ 的子串,因为没有合适的 $l$。
现在,Vasya 在信息学课上遇到了这样一个问题:给定一个只包含“0”和“1”的字符串,要求找出其最短唯一子串的长度。他已经写好了这个问题的解法,并想要测试它。现在他请求你帮忙。
给定两个正整数 $n$ 和 $k$,满足 $(n \bmod 2) = (k \bmod 2)$,其中 $(x \bmod 2)$ 表示 $x$ 除以 $2$ 的余数。请你构造一个长度为 $n$ 的只包含“0”和“1”的字符串 $s$,使得其最短唯一子串的长度恰好为 $k$。
输入格式
第一行包含两个用空格分隔的整数 $n$ 和 $k$($1 \leq k \leq n \leq 100\,000$,且 $(k \bmod 2) = (n \bmod 2)$)。
输出格式
输出一个长度为 $n$ 的只包含“0”和“1”的字符串 $s$。要求 $s$ 的最短唯一子串的长度恰好为 $k$。你可以输出任意一个满足条件的字符串。保证至少存在一个解。
说明/提示
在第一个测试样例中,很容易看出字符串 $s = $ "1111" 的唯一子串就是整个字符串 $s$ 本身,其长度为 $4$。
在第二个测试样例中,字符串 $s = $ "01010" 的最短唯一子串为 $t = $ "101",其长度为 $3$。
在第三个测试样例中,字符串 $s = $ "1011011" 的最短唯一子串为 $t = $ "110",其长度为 $3$。
由 ChatGPT 4.1 翻译