CF1550E.Stringforces

省选/NOI-

通过率:0%

时间限制:3.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a string ss of length nn. Each character is either one of the first kk lowercase Latin letters or a question mark.

You are asked to replace every question mark with one of the first kk lowercase Latin letters in such a way that the following value is maximized.

Let fif_i be the maximum length substring of string ss, which consists entirely of the ii-th Latin letter. A substring of a string is a contiguous subsequence of that string. If the ii-th letter doesn't appear in a string, then fif_i is equal to 00.

The value of a string ss is the minimum value among fif_i for all ii from 11 to kk.

What is the maximum value the string can have?

给你一个长度为 nn 的字符串 ss。每个字符要么是前 kk 个小写拉丁字母之一,要么是一个问号。

你需要将每个问号替换为前 kk 个小写拉丁字母中的某一个,使得以下值最大化。

令 fif_i 表示字符串 ss 中由第 ii 个拉丁字母完全组成的最长子串的长度。字符串的子串是指该字符串的一个连续子序列。若第 ii 个字母未在字符串中出现,则 fi=0f_i = 0。

字符串 ss 的值定义为所有 ii(从 11 到 kk)对应的 fif_i 中的最小值。

该字符串所能达到的最大值是多少?

输入格式

The first line contains two integers nn and kk (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5; 1≤k≤171 \le k \le 17) — the length of the string and the number of first Latin letters used.

The second line contains a string ss, consisting of nn characters. Each character is either one of the first kk lowercase Latin letters or a question mark.

第一行包含两个整数 nn 和 kk(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5;1≤k≤171 \le k \le 17)—— 分别表示字符串的长度以及所使用的前 kk 个拉丁字母的数量。

第二行包含一个长度为 nn 的字符串 ss。其中每个字符要么是前 kk 个小写拉丁字母之一,要么是一个问号。

输出格式

Print a single integer — the maximum value of the string after every question mark is replaced with one of the first kk lowercase Latin letters.

输出一个整数——在将每个问号替换为前 kk 个小写拉丁字母中的一个后,字符串所能达到的最大值。

输入输出样例

  • 输入#1

    10 2
    a??ab????b

    输出#1

    4
  • 输入#2

    9 4
    ?????????

    输出#2

    2
  • 输入#3

    2 3
    ??

    输出#3

    0
  • 输入#4

    15 3
    ??b?babbc??b?aa

    输出#4

    3
  • 输入#5

    4 4
    cabd

    输出#5

    1

说明/提示

In the first example the question marks can be replaced in the following way: "aaaababbbb". f1=4f_1 = 4, f2=4f_2 = 4, thus the answer is 44. Replacing it like this is also possible: "aaaabbbbbb". That way f1=4f_1 = 4, f2=6f_2 = 6, however, the minimum of them is still 44.

In the second example one of the possible strings is "aabbccdda".

In the third example at least one letter won't appear in the string, thus, the minimum of values fif_i is always 00.

在第一个例子中,问号可以如下替换:“aaaababbbb”。此时 f1=4f_1 = 4,f2=4f_2 = 4,因此答案为 44。也可以按如下方式替换:“aaaabbbbbb”,此时 f1=4f_1 = 4,f2=6f_2 = 6,但它们的最小值仍为 44。

在第二个例子中,一种可能的字符串是 “aabbccdda”。

在第三个例子中,至少有一个字母不会出现在字符串中,因此所有 fif_i 值的最小值恒为 00。

输入解题思路,AI测评打分。不知道怎么写?

首页