小明最近迷上了解密古代文字的研究。他发现了一块古代石头,上面刻着一个长度为 N 的小写字母字符串 S ,它可能隐藏着某个重要信息。
为了破解这个信息,小明发现他可以通过付出一定代价来操作这个字符串:
付出 A 元,可以将字符串 S 的第一个字符移到最后位置。例如,将 abc 变为 bca 。
付出 B 元,可以选择字符串 S 中的任意一个字符,然后将其替换为其他小写字母。例如,将 acb 变为 adb 。
小明想知道,要把这个字符串 S 变成一个回文串,至少需要花费多少元?
注意: 回文串是正读和反读都一致的字符串,比如 aba 和 abcba 都是回文串。
请你帮助小明计算一下最小的花费。
第一行包含三个整数 N、A、B,分别表示字符串 S 的长度,操作 1 和操作 2 的花费。
第二行包含一个长度为 N 的字符串 S,仅包含小写字母。
输出一个整数,表示将字符串 S 变成回文串的最小花费。
5 1 2 rrefa
3
8 1000000000 1000000000 bcdfcgaa
4000000000
5 1 2 rrerr
0
首先,支付 2 元执行第二种操作一次:让 i=5,将{S_5} 替换为 e
。此时,S 现在是 rrefe
。
然后,支付 1 元执行第一种操作一次。现在,S 是refer
,这是一个回文。
因此,你可以用 3 元将 S 变成回文。由于你不能用 2 元或更少的钱使 S 成为回文,所以答案是 3 。
【样例 2 解释】
需要支付 4000000000 元,可以变成回文串。
【样例 3 解释】
由于输入的字符串就是回文,所以需要支付 0 元。
对于 40\% 的数据,1 \le N \le 800。
对于 100\% 的数据,1 \leq N \leq 5000,1 \leq A,B \leq 10^9。
东方博宜OJ