CF1011A.Stages

传统题 时间 2000 ms 内存 256 MiB 4 尝试 1 已通过 1 标签

Stages

题目描述

Natasha 即将飞往火星。她需要组装一枚火箭,火箭由若干级按某种顺序组成。每一级由一个小写拉丁字母表示。因此,火箭可以用一个字符串描述——即这些字母的拼接,代表各级。

现有 nn 个可用的级。火箭必须恰好包含 kk 级。火箭中的各级应按其重量顺序排列。因此,在某个字母后面只能接字母表中至少相隔两个位置的字母(即中间至少跳过一个字母,或更多)。例如,在字母 'c' 后面不能接 'a'、'b'、'c' 和 'd',但可以接 'e'、'f'、……、'z'。

为了让火箭飞得尽可能远,其总重量应最小。火箭的重量等于各级重量之和。每一级的重量等于其字母在字母表中的序号。例如,'a' 的重量为 1 吨,'b' 的重量为 2 吨,'z' 的重量为 26 吨。

请构造一枚总重量最小的火箭,或判断无法组装出符合要求的火箭。每个级最多只能使用一次。

输入格式

输入的第一行包含两个整数 nnkk1kn501 \le k \le n \le 50),分别表示可用级的数量和火箭需用的级数。

第二行包含一个长度为 nn 的字符串 ss,由小写拉丁字母组成。每个字母代表一种可用的级。每个级最多只能使用一次。

输出格式

输出一个整数,表示火箭的最小总重量。如果无法组装出符合要求的火箭,则输出 1-1

说明/提示

在第一个样例中,以下火箭满足条件:

  • "adx"(重量为 1+4+24=291+4+24=29);
  • "ady"(重量为 1+4+25=301+4+25=30);
  • "bdx"(重量为 2+4+24=302+4+24=30);
  • "bdy"(重量为 2+4+25=312+4+25=31)。

"adx" 火箭的重量最小,因此答案为 2929

在第二个样例中,目标火箭为 "belo",其重量为 2+5+12+15=342+5+12+15=34

在第三个样例中,n=k=2n=k=2,因此火箭必须包含 'a' 和 'b' 两级。但这两级在字母表中相邻,不满足条件。答案为 1-1

由 ChatGPT 4.1 翻译

样例

5 3
xyabd
29
7 4
problem
34
2 2
ab
-1
12 1
abaabbaaabbb
1

在线编程 IDE

建议全屏模式获得最佳体验