跳到主要内容

P4759. 纯净之力

场次:2026年4月11日-开发岗 · 来源:CodeFun2000 P4759

题目描述​

定义一个由小写字母组成的字符串的纯净子串为:所有字符互不相同的子串。 字符串的纯净力定义为:该字符串中长度最大的纯净子串的数量(按起始位置计数,不同起始位置视为不同子串)。

现在给定两个正整数 LL 和 MM,请你构造一个长度恰好为 LL 的、仅由小写字母组成的字符串,使其纯净力恰好等于 MM。如果无法构造,请输出 −1-1。

数据范围:LL 不超过 10510^5,MM 不超过 LL,所有数均为正整数。

输入格式​

输入仅一行,包含两个整数 LL 和 MM,中间用空格隔开。

输出格式​

若存在满足要求的字符串,输出该字符串;否则输出 −1-1。答案不唯一时,输出任意一个合法字符串即可。

示例​

示例 1​

输入:

1 1

输出:

a

说明:

字符串长度 L=1L=1,纯净力要求 M=1M=1,此时 L=ML=M。

构造全 'a' 字符串 "a",其所有子串均为 "a",最大纯净子串长度为 1,且只有 1 个这样的子串,纯净力恰好为 1。

这是最小的边界情况。

示例 2​

输入:

6 6

输出:

aaaaaa

说明:

字符串长度 L=6L=6,纯净力 M=6M=6,满足 L=ML=M。

构造全 'a' 字符串 "aaaaaa",所有字符相同,任意子串均不包含两个不同字符,因此最大纯净子串长度为 1。长度为 1 的纯净子串共有 6 个,起始位置分别为 1~6,纯净力等于 6。

当 L=ML=M 时,全相同字符是最直接的构造。

示例 3​

输入:

5 2

输出:

abaaa

说明:

字符串长度 L=5L=5,纯净力 M=2M=2,这里 M<LM < L。

先交替放置前 M+1=3M+1=3 个字符,得到 "aba";剩余 L−(M+1)=2L-(M+1)=2 个字符全部用最后一个字符 'a' 填充,最终得到 "abaaa"。

该字符串中最大纯净子串的长度为 2(只有 'a' 和 'b' 两种字母)。相邻不同字符的对有:位置 1 的 "ab" 和位置 2 的 "ba",共 2 个长度为 2 的纯净子串。因此纯净力为 2,符合要求。

示例 4​

输入:

4 3

输出:

abab

说明:

字符串长度 L=4L=4,纯净力 M=3M=3,M<LM < L 且 M+1=LM+1 = L。

交替放置前 M+1=4M+1=4 个字符,得到 "abab",正好用完所有长度。此时相邻不同字符对为:"ab"(位置 1)、"ba"(位置 2)、"ab"(位置 3),共 3 个长度为 2 的纯净子串。

最大纯净子串的长度为 2,数目恰好为 3,纯净力等于 MM。

加载评论中...