求助悬棺(十万火急)
  • 板块学术版
  • 楼主kkksc82
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/3/23 21:58
  • 上次更新2024/3/24 07:48:49
查看原帖
求助悬棺(十万火急)
1029253
kkksc82楼主2024/3/23 21:58

做了很久不会写,请教大佬!

描述

小炫今天刚学完“字符串类型”这一节内容,学到了一个新的概念,回文字符串,大家都知道回文串的概念,一个字符串正向读和反向读是相同的,例如aba,abcba等等(空串也视为回文串),现在我们的任务是将一个字符串S变成回文串。我们可以通过删除某个字符或者添加某个字符的组合操作使它成为回文串,但是每个操作都有一个代价,现在我们希望花费最小的代价使这个字符串变为回文串。字符串都由小写字母组成。

输入描述

第一行为正整数t(≤10),表示数据组数;

每组数据中: 第一行为两个正整数m(≤26), n(≤2000),m表示变换规则的数目,n表示字符串的长度; 第二行为长度为n的字符串S;接下来m行为变换规则,每条规则一定是这样的形式:<字符ch> <添加此字符的代价> <删除此字符的代价>;字符串中的任一字符有且仅有一条对应的规则,添加代价和删除代价均为不超过3000的正整数。

输出描述

对于每组数据,输出使S串变成回文串花费的最小代价。

用例输入 1

1

3 4

abcb

a 1000 1100

b 350 700

c 200 800

用例输出 1

900

提示

在原串的左边添加bcb,代价是900,这是最小的代价。

2024/3/23 21:58
加载中...