D. 字符串转换

    传统题 文件IO:t4 1000ms 256MiB

字符串转换

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

T4. 字符串转换

属性 值
内存限制 256 MiB
时间限制 1000 ms

题目描述

小蓝正在学习文本编辑,她有两个字符串 AA 和 BB。她希望通过若干次操作将字符串 AA 变成字符串 BB。允许的操作有三种:

  1. 删除:删除 AA 中的一个字符,代价为 cdc_d。
  2. 插入:在 AA 的任意位置插入一个字符,代价为 cic_i。
  3. 替换:将 AA 中的一个字符替换为另一个字符,代价为 crc_r。

注意:操作的代价是正整数,且三种操作的代价可能各不相同。

请你帮助小蓝计算:将字符串 AA 变为字符串 BB 所需的最小总代价。

输入格式

第一行一个字符串 AA。

第二行一个字符串 BB。

第三行三个整数 cd,ci,crc_d, c_i, c_r,分别表示删除、插入、替换操作的代价。

输出格式

输出一行一个整数,表示最小总代价。

样例

样例 #1

输入样例(t4.in)

abc
abd
2 3 1

输出样例(t4.out)

1

解释:将 c 替换为 d,代价 cr=1c_r = 1,总代价 11。也可以先删除 c(代价 22)再插入 d(代价 33),总代价 55。最小为 11。

样例 #2

输入样例

horse
ros
1 1 1

输出样例

3

解释:经典编辑距离,删除、插入、替换代价均为 11。最少需要 33 步: horse → 替换 h 为 r → rorse → 删除第 33 个 r → rose → 删除 e → ros。

样例 #3

输入样例

ab
ba
1 2 3

输出样例

3

解释:删除代价 11,插入代价 22,替换代价 33。

方案一:先删除 a(代价 11)得到 "b",再在末尾插入 a(代价 22)得到 "ba",总代价 33。

方案二:先删除 b(代价 11)得到 "a",再在前面插入 b(代价 22)得到 "ba",总代价 33。

方案三:两次替换(代价 3+3=63+3=6)。最小为 33。

数据范围与提示

测试点编号 ∣A∣,∣B∣≤\lvert A \rvert, \lvert B \rvert \le 特殊约定
1∼21 \sim 2 1010 无特殊约定
3∼53 \sim 5 200200
6∼86 \sim 8 10001000 cd=ci=cr=1c_d = c_i = c_r = 1
9∼109 \sim 10 无特殊约定

对于 100%100\% 的数据,1≤∣A∣,∣B∣≤10001 \le |A|, |B| \le 1000,1≤cd,ci,cr≤10001 \le c_d, c_i, c_r \le 1000。字符串 A,BA, B 仅由小写英文字母组成。

提示:

  • 定义 dp[i][j]dp[i][j] 表示将 AA 的前 ii 个字符转换为 BB 的前 jj 个字符所需的最小代价(0≤i≤∣A∣0 \le i \le |A|,0≤j≤∣B∣0 \le j \le |B|)。
  • 初始化:
    • dp[0][0]=0dp[0][0] = 0;
    • dp[i][0]=i×cddp[i][0] = i \times c_d(删除 AA 的前 ii 个字符);
    • dp[0][j]=j×cidp[0][j] = j \times c_i(插入 BB 的前 jj 个字符)。
  • 转移方程(1≤i≤∣A∣1 \le i \le |A|,1≤j≤∣B∣1 \le j \le |B|):
    • 删除:dp[i−1][j]+cddp[i-1][j] + c_d
    • 插入:dp[i][j−1]+cidp[i][j-1] + c_i
    • 替换/匹配:dp[i−1][j−1]+(A[i−1]==B[j−1]  ?  0:cr)dp[i-1][j-1] + (A[i-1] == B[j-1] \;?\; 0 : c_r)
    • dp[i][j]=min⁡(删除,插入,替换/匹配)dp[i][j] = \min(删除, 插入, 替换/匹配)
  • 字符串下标从 00 开始,注意与 DP 状态下标(从 11 开始)的对应关系。
  • 时间复杂度 O(∣A∣×∣B∣)O(|A| \times |B|),空间可优化为 O(∣B∣)O(|B|)(滚动数组)。

24KOI 2026 体验赛 No.01

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-6-20 11:30
结束于
2026-6-20 15:00
持续时间
3.5 小时
主持人
参赛人数
17