【题目描述】:
给你一个长度为n的字符串s,该字符串仅由字符0和1组成。
执行以下操作直到字符串为空:选择某个连续的相同字符的子串,将其从字符串中删除,剩余两部分按原顺序合并(其中任何部分都可以为空)。
例如:如果从字符串111110中删除子串111,则将获得字符串110。
删除长度为l的子串,将获得奖励a×l+b。
按上述操作直到字符串为空,你能获得总奖励的最大值是多少?
【输入描述】:
第一行一个正整数t(1≤t≤2000),表示测试组数;
每组数据输入两行,第一行三个整数n、a、b(1≤n≤1000;-100≤a,b≤100),如题意;
第二行输入一个长度为n的字符串s,s由0和1组成。
【输出描述】:
对于每个测试组输出一行一个整数,表示总奖励的最大值。
【样例输入】:
3
3 2 0
000
5 -2 5
11001
6 1 -4
100111
【样例输出】:
6
15
-2
【样例说明】:
第一组数据:一步将000删除,贡献2×3+0=6
第二组数据:一个一个删除字符,贡献5×(-2×1+5)=15
第三组数据:先删除00,再删除1111,贡献(1×2-4)+(1×4-4)=-2
【时间限制、数据范围及描述】:
时间:1s 空间:256M
对于20%的数据:1≤t≤2000;1≤n≤100;输入串全0,或全1。
对于50%的数据:1≤t≤2000;1≤n≤100;
对于100%的数据:1≤t≤2000;1≤n≤1000;