CF1550B.Maximum Cost Deletion

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

Maximum Cost Deletion

题目描述

给定一个长度为 nn 的仅由字符 0011 组成的字符串 ss

你需要不断进行如下操作直到字符串变为空:选择一段连续且字符相同的子串,将其从字符串中删除,并将剩余的两部分(任意一部分可以为空)按原顺序拼接。例如,如果你从字符串 111110 中删除子串 111,你将得到字符串 110。当你删除长度为 ll 的子串时,你可以获得 al+ba \cdot l + b 分。

你的任务是计算,在必须将给定字符串删空的前提下,你最多能获得多少分。

输入格式

第一行包含一个整数 tt1t20001 \le t \le 2000),表示测试用例的数量。

每个测试用例的第一行包含三个整数 nnaabb1n100;100a,b1001 \le n \le 100; -100 \le a, b \le 100),分别表示字符串 ss 的长度以及参数 aabb

每个测试用例的第二行包含一个仅由字符 0011 组成的字符串 ss

输出格式

对于每个测试用例,输出一个整数,表示你最多能获得的分数。

说明/提示

在第一个样例中,直接删除整个字符串即可获得 23+0=62 \cdot 3 + 0 = 6 分。

在第二个样例中,如果每次只删除一个字符,则每次可获得 (2)1+5=3(-2) \cdot 1 + 5 = 3 分,总共可以获得 1515 分。

在第三个样例中,可以先从字符串 100111 中删除子串 00,获得 12+(4)=21 \cdot 2 + (-4) = -2 分,剩下字符串 1111,全部删除可获得 14+(4)=01 \cdot 4 + (-4) = 0 分。总共进行了两次操作,获得 2-2 分。

由 ChatGPT 4.1 翻译

样例

3
3 2 0
000
5 -2 5
11001
6 1 -4
100111
6
15
-2

在线编程 IDE

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