A94818.字符的清理代价

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

给定两个字符串 S1S_1S2S_2

你现在需要对它们进行“清理”操作:你可以从任意一个字符串中删除任意数量的字符。
目标是让两个字符串在清理后变得完全相同

但是,删除字符是有代价的。每删除一个字符,你就要消耗等于该字符 ASCII 码值 的代价。
(例如:删除字符 'a' 的代价是 97,删除 'b' 的代价是 98)。

请问,为了让两个字符串变得相同,你所付出的最小总代价是多少?

注意:如果最终把两个字符串都删成了空串,它们也被认为是相同的,此时的代价就是原字符串所有字符的 ASCII 码之和。

输入格式

输入共两行。
第一行包含一个字符串 S1S_1
第二行包含一个字符串 S2S_2

输出格式

输出一个整数,表示最小的删除代价总和。

输入输出样例

  • 输入#1

    sea
    eat

    输出#1

    231
  • 输入#2

    delete
    leet

    输出#2

    403

说明/提示

样例解释与数据范围

样例 #1 解释

  • S1=S_1= sea, S2=S_2= eat
  • 我们希望它们变成相同的字符串 ea
  • 操作步骤:
    1. sea 中删除 s (ASCII: 115)。
    2. eat 中删除 t (ASCII: 116)。
  • 总代价 = 115+116=231115 + 116 = 231

样例 #2 解释

  • S1=S_1= delete, S2=S_2= leet
  • 最终目标是将它们都变成 leet
  • 需要从 delete 中删除 d (100) 和 e (101)。
  • leet 不需要删除。
  • 总代价 = 100+101=403100 + 101 = 403
  • (注:如果变成 lee,虽然相等,但代价会更高,因为要多删字符)。

数据范围

  • 对于 100%100\% 的数据,字符串仅包含小写英文字母。
  • 1S1,S25001 \le |S_1|, |S_2| \le 500

数据点分布:

  • 测试点 1-5:字符串长度 10\le 10 (适合手算验证)
  • 测试点 6-15:字符串长度 100\le 100
  • 测试点 16-25:字符串长度 500\le 500
首页