#CF2000D. 左右错误
左右错误
D. 左右错误(Right Left Wrong)
每个测试的时间限制: 秒
内存限制: 兆字节
Vlad 找到了一条有 个格子的条带,格子从左到右编号为 到 。
在第 个格子里,有一个正整数 和一个字母 ,其中所有 要么是 'L' 要么是 'R'。
Vlad 邀请你通过执行任意次(可能为零次)操作,来获得尽可能高的分数。
在一次操作中,你可以选择两个下标 和 (),满足 且 ,然后执行以下步骤:
- 将 点分数加到当前得分中;
- 将所有满足 的 替换为
'.',表示这些下标不能再被选择。
例如,考虑下面的条带:
| 格子 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 3 | 5 | 1 | 4 | 3 | 2 | |
| L | R | L | R | |||
你可以先选择 ,加上 分。
此时状态变为:
| 格子 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 3 | 5 | 1 | 4 | 3 | 2 | |
| . | L | R | ||||
然后选择 ,加上 分。
状态变为:
| 格子 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 3 | 5 | 1 | 4 | 3 | 2 | |
| . | ||||||
无法再执行操作,最终得分为 。
问: 可以获得的最高分数是多少?
输入格式
第一行包含一个整数 ()——测试用例的数量。
每个测试用例的第一行包含一个整数 ()——条带的长度。
第二行包含 个整数 ()——格子上的数字。
第三行包含一个长度为 的字符串 ,只包含字符 'L' 和 'R'。
保证所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,输出一个整数——可以获得的最高分数。
示例
输入:
4
6
3 5 1 4 3 2
LRLLLR
2
2 8
LR
2
3 9
RL
5
1 2 3 4 5
LRLRR
输出:
18
10
0
22