U576404 回文串变换

题目背景

小C最近在学习字符串算法,他想通过一些操作将一个字符串变成回文串

题目描述

小 C 有一个长度为 $n$($n$ 为偶数)的小写字母字符串 $S$。他可以通过以下两种操作将 $S$ 变成**回文串**(即对于所有 $1 \leq i \leq n/2$,满足 $S[i] = S[n-i+1]$): 1. **交换**:交换任意两个位置的字符,每次交换的代价为 $w_{i,j}$($i$ 和 $j$ 是位置编号,且 $w_{i,j} = w_{j,i}$,$w_{i,i} = 0$)。 2. **替换**:将某个位置的字符 $c_1$ 替换为另一个字符 $c_2$($c_1 \neq c_2$),代价为 $v_{c_2}$。 小 C 可以**任意组合这两种操作**,目标是让 $S$ 变成回文串,且**总代价最小**。请你帮助他计算出这个最小总代价。

输入格式

- 第一行:整数 $n$(字符串长度)。 - 第二行:26 个整数,表示替换代价数组 $v$($v_{c}$ 表示字符 $c$ 的替换代价)。 - 第三行:字符串 $S$。 - 接下来 $n$ 行:每行 $n$ 个整数,表示交换代价矩阵 $w$($w_{i,j}$ 表示交换位置 $i$ 和 $j$ 的代价)。

输出格式

- 一个整数,表示最小总代价。

说明/提示

#### 解释 - 交换位置 3 和 5(代价 2),得到 `abaaba`。 - 替换字符 'a' 为 'b'(代价 3),总代价 5,但直接替换更优。 ### 测试点设计 | 测试点 | $n$ | 字符集 | 替换代价 $v$ | 交换代价 $w$ | 预期输出 | 考察点 | |--------|-------|---------------|--------------------|--------------------|----------|----------------------| | 1 | 2 | `a`-`b` | 全 1 | 全 0 | 0 | 已经是回文 | | 2 | 4 | `a`-`d` | 全 1 | 对称矩阵,$w_{i,j}=1$ | 2 | 必须交换 | | 3 | 6 | `a`-`b` | $v_a=1, v_b=2$ | $w_{i,j}=|i-j|$ | 3 | 替换比交换更优 | | 4 | 100 | 全小写字母 | 随机 $1 \leq v_c \leq 100$ | 随机 $1 \leq w_{i,j} \leq 100$ | 动态计算 | 大规模数据验证 | | 5 | 1000 | 全小写字母 | $v_c = c$(ASCII码)| $w_{i,j}=i+j$ | 动态计算 | 极限数据测试 |