AT_agc066_d [AGC066D] A Independent Set
题目描述
给定一个由 `A` 和 `B` 组成、长度为 $N$ 的字符串 $S$。保证 $S$ 中 `A` 的个数不超过 $\frac{N+1}{2}$。此外,给定一个正整数序列 $(x_1,\ \ldots,\ x_{N-1})$。
你可以对该字符串重复进行如下操作:
- 选择满足 $1\leq i\leq N-1$ 的整数 $i$,交换 $S$ 的第 $i$ 个字符和第 $i+1$ 个字符。该操作的代价为 $x_i$。
你的目标是使 $S$ 中任意两个 `A` 不相邻。请你求出为达成目标所需的总代价的最小值。
有 $T$ 组测试数据,请分别输出每组的答案。
输入格式
输入按以下格式从标准输入给出。
> $T$
> $\text{case}_1$
> $\vdots$
> $\text{case}_T$
每组测试数据格式如下:
> $N$ $S$ $x_1$ $\ldots$ $x_{N-1}$
输出格式
请输出 $T$ 行,第 $i$ 行输出第 $i$ 组测试数据中,为使 $S$ 中任意两个 `A` 不相邻所需的最小总代价。
说明/提示
### 限制条件
- $1\leq T\leq 10^5$
- $2\leq N\leq 10^6$
- $S$ 是由 `A` 和 `B` 组成的长度为 $N$ 的字符串。
- $S$ 中 `A` 的个数不超过 $\frac{N+1}{2}$。
- $1\leq x_i\leq 10^6$
- 所有测试数据中 $N$ 的总和不超过 $10^6$。
### 样例解释 1
- 对于第 $1$ 组测试数据,通过对 $i=1$ 进行操作,$S$ 由 `BAAB` 变为 `ABAB`,目标达成,总代价为 $x_1=3$。
- 对于第 $2$ 组测试数据,不进行任何操作即可达成目标,总代价为 $0$。
- 对于第 $3$ 组测试数据,通过对 $i=1$、$i=4$ 进行操作,$S$ 由 `BAAABBB` 变为 `ABAABBB`,再变为 `ABABABB`,目标达成,总代价为 $x_1+x_4=13$。
- 对于第 $4$ 组测试数据,通过对 $i=4$、$i=3$、$i=5$ 进行操作,$S$ 由 `BAAABBB` 变为 `BAABABB`,再变为 `BABAABB`,再变为 `BABABAB`,目标达成,总代价为 $x_4+x_3+x_5=15$。
由 ChatGPT 4.1 翻译