A94818.字符的清理代价
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给定两个字符串 S1 和 S2。
你现在需要对它们进行“清理”操作:你可以从任意一个字符串中删除任意数量的字符。
目标是让两个字符串在清理后变得完全相同。
但是,删除字符是有代价的。每删除一个字符,你就要消耗等于该字符 ASCII 码值 的代价。
(例如:删除字符 'a' 的代价是 97,删除 'b' 的代价是 98)。
请问,为了让两个字符串变得相同,你所付出的最小总代价是多少?
注意:如果最终把两个字符串都删成了空串,它们也被认为是相同的,此时的代价就是原字符串所有字符的 ASCII 码之和。
输入格式
输入共两行。
第一行包含一个字符串 S1。
第二行包含一个字符串 S2。
输出格式
输出一个整数,表示最小的删除代价总和。
输入输出样例
输入#1
sea eat
输出#1
231
输入#2
delete leet
输出#2
403
说明/提示
样例解释与数据范围
样例 #1 解释
- S1=
sea, S2=eat。 - 我们希望它们变成相同的字符串
ea。 - 操作步骤:
- 从
sea中删除s(ASCII: 115)。 - 从
eat中删除t(ASCII: 116)。
- 从
- 总代价 = 115+116=231。
样例 #2 解释
- S1=
delete, S2=leet。 - 最终目标是将它们都变成
leet。 - 需要从
delete中删除d(100) 和e(101)。 leet不需要删除。- 总代价 = 100+101=403。
- (注:如果变成
lee,虽然相等,但代价会更高,因为要多删字符)。
数据范围
- 对于 100% 的数据,字符串仅包含小写英文字母。
- 1≤∣S1∣,∣S2∣≤500。
数据点分布:
- 测试点 1-5:字符串长度 ≤10 (适合手算验证)
- 测试点 6-15:字符串长度 ≤100
- 测试点 16-25:字符串长度 ≤500