CF1057C Tanya and Colored Candies

题目描述

Tania 面前有 $n$ 个糖果盒。这些盒子从左到右排成一行,编号为 $1$ 到 $n$。第 $i$ 个盒子里有 $r_i$ 颗糖果,糖果的颜色为 $c_i$(颜色可以是红色、绿色或蓝色三种之一)。每个盒子里的糖果颜色都相同(即为 $c_i$)。 一开始,Tania 站在编号为 $s$ 的盒子旁边。Tania 可以移动到相邻的盒子(即编号相差 $1$ 的盒子),或者吃掉当前盒子里的糖果。Tania 吃糖果是瞬间完成的,但每次移动需要花费 $1$ 秒。 如果 Tania 吃掉某个盒子的糖果,盒子本身还在,但里面的糖果就没有了。换句话说,Tania 总是一次性吃光一个盒子里的所有糖果,且盒子里的糖果不会被补充。 已知 Tania 不能连续吃同一种颜色的糖果(即她连续吃糖果的两个盒子,其糖果颜色必须不同)。此外,Tania 的胃口会不断增长,因此她每次吃的下一个盒子里的糖果数量必须严格多于上一个盒子。 注意,对于 Tania 吃的第一个盒子,没有颜色和糖果数量的限制。 Tania 想要吃至少 $k$ 颗糖果。请问她最少需要多少秒?请记住,Tania 吃糖果不耗时,只有移动才耗时。

输入格式

第一行包含三个整数 $n$、$s$ 和 $k$($1 \le n \le 50$,$1 \le s \le n$,$1 \le k \le 2000$),分别表示盒子的数量、Tania 的初始位置和她想要吃的糖果的最少数量。 第二行包含 $n$ 个整数 $r_i$($1 \le r_i \le 50$),表示每个盒子里的糖果数量。 第三行包含 $n$ 个字母,分别为 'R'、'G' 和 'B',表示每个盒子里糖果的颜色('R' 表示红色,'G' 表示绿色,'B' 表示蓝色)。这一行中间没有空格。

输出格式

输出 Tania 吃到至少 $k$ 颗糖果所需的最少秒数。如果无法实现,输出 $-1$。

说明/提示

以第一个样例为例,Tania 的操作顺序如下: - 从第 $3$ 号盒子移动到第 $2$ 号盒子; - 吃掉第 $2$ 号盒子的糖果; - 从第 $2$ 号盒子移动到第 $3$ 号盒子; - 吃掉第 $3$ 号盒子的糖果; - 从第 $3$ 号盒子移动到第 $4$ 号盒子; - 从第 $4$ 号盒子移动到第 $5$ 号盒子; - 吃掉第 $5$ 号盒子的糖果。 由于 Tania 吃糖果是瞬间完成的,因此所需时间为 $4$ 秒。 由 ChatGPT 4.1 翻译