luogu#B3829. [NICA #2] 字符串入门题

[NICA #2] 字符串入门题

题目背景

小波说这是字符串入门题极好的,所以这是极好的。

题目描述

给定一个仅包含大小写字母和数字的字符串 ss,问能否将 ss 拆分成至少 kk 个子串 s1,s2,,st(tk)s_1,s_2,\dots,s_t(t\ge k) 满足 1<it\forall 1<i\le tsis_is1s2si1s_1s_2\dots s_{i-1}(这里表示的是拼接)的子串。

一个字符串 ss 是另一个字符串 tt 的子串当且仅当可以通过删除 tt 的一个可以为空的前缀以及一个可以为空的后缀后得到 ss

输入格式

第一行两个正整数 n,kn,k,其中 nnss 的长度。

第二行一个字符串 ss,仅包含大小写字母和数字。

输出格式

如果不存在这样的拆分方案,输出 -1

否则第一行输出一个正整数 t(tk)t(t\ge k),表示你要把 ss 拆分成 tt 个字符串。

接下来 tt 行,每行一个字符串,第 ii 行表示 sis_i。你需要保证 s1s2st=ss_1s_2\dots s_t=s

6 2
114514
2
1145
14
8 2
a1Aa11Aa
3
a1A
a1
1Aa
11 2
stoImakforz
-1

提示

样例 1 解释

1145|14是一种合法的拆分方案,因为拆分出了 22 个字符串且 2k2\ge k,并且141145的一个子串。

样例 2 解释

a1A|a1|1Aa是一种合法的拆分方案,因为拆分出了 33 个字符串且 3k3\ge k,并且a1a1A的一个子串,且1Aaa1Aa1的一个子串。

样例 3 解释

尝试所有拆分方案后发现无论如何拆分都无法满足条件。

数据范围

对于所有数据,满足 2kn1062\le k\le n\le 10^6ss 仅由大小写字母和数字构成。