CF1011A Stages
题目描述
Natasha 即将飞往火星。她需要组装一枚火箭,火箭由若干级按某种顺序组成。每一级由一个小写拉丁字母表示。因此,火箭可以用一个字符串描述——即这些字母的拼接,代表各级。
现有 $n$ 个可用的级。火箭必须恰好包含 $k$ 级。火箭中的各级应按其重量顺序排列。因此,在某个字母后面只能接字母表中至少相隔两个位置的字母(即中间至少跳过一个字母,或更多)。例如,在字母 'c' 后面不能接 'a'、'b'、'c' 和 'd',但可以接 'e'、'f'、……、'z'。
为了让火箭飞得尽可能远,其总重量应最小。火箭的重量等于各级重量之和。每一级的重量等于其字母在字母表中的序号。例如,'a' 的重量为 1 吨,'b' 的重量为 2 吨,'z' 的重量为 26 吨。
请构造一枚总重量最小的火箭,或判断无法组装出符合要求的火箭。每个级最多只能使用一次。
输入格式
输入的第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 50$),分别表示可用级的数量和火箭需用的级数。
第二行包含一个长度为 $n$ 的字符串 $s$,由小写拉丁字母组成。每个字母代表一种可用的级。每个级最多只能使用一次。
输出格式
输出一个整数,表示火箭的最小总重量。如果无法组装出符合要求的火箭,则输出 $-1$。
说明/提示
在第一个样例中,以下火箭满足条件:
- "adx"(重量为 $1+4+24=29$);
- "ady"(重量为 $1+4+25=30$);
- "bdx"(重量为 $2+4+24=30$);
- "bdy"(重量为 $2+4+25=31$)。
"adx" 火箭的重量最小,因此答案为 $29$。
在第二个样例中,目标火箭为 "belo",其重量为 $2+5+12+15=34$。
在第三个样例中,$n=k=2$,因此火箭必须包含 'a' 和 'b' 两级。但这两级在字母表中相邻,不满足条件。答案为 $-1$。
由 ChatGPT 4.1 翻译