B4139 [信息与未来 2016] 字符串替换
题目描述
小明最近迷上了字符串操作。对每个字符串,小明每次可以执行以下两种操作之一:
1. 把字符串的某个字符改成任意一个其他字符,花费 $1$ 的代价;
2. 交换字符串中的两个字符,花费 $0$ 的代价。
小明发现,把一个字符串通过一系列的操作,可以转换成任何一个与之等长的字符串。
例如,把 $\tt hello$ 变为 $\tt world$ 的一种代价为 $3$ 的操作序列如下:
$\gdef\ar{\rightarrow}$
1. $\tt \red hello \ar \red wello$(替换 $\tt h$ 为 $\tt w$,代价为 $1$)。
2. $\tt w\blue ell\blue o\ar w\blue oll\blue e$(交换 $\tt e$ 和 $\tt o$,代价为 $0$)。
3. $\tt wo\red lle \ar wo\red rle$(替换 $\tt l$ 为 $\tt r$,代价为 $1$)。
4. $\tt worl\red e \ar worl\red d$(替换 $\tt e$ 为 $\tt d$,代价为 $1$)。
小明发现,无法用少于 $3$ 次的代价将 $\tt hello$ 变为 $\tt world$。
显然,不同的转换方案花费的代价是不同的,请编程帮助小明计算把一个字符串变为另一个字符串的最小代价。
输入格式
一行两个用空格隔开的正整数 $n$(字符串长度),$s_0$(数据生成器的初始数值)。
本题中的字符串根据给定的初始数值 $s_0$ 按以下规则生成:
$$
\begin{aligned}
&\text{for } i=1\text{ to } n\\
&\quad s_i\leftarrow(s_{i-1}\times345) \bmod 19997
\end{aligned}
$$
第一个字符串的第 $i\in [1,n]$ 个字符的 ASCII 码为 $97+(s_i \bmod 26)$。
然后令 $t_0=s_n$。
$$
\begin{aligned}
&\text{for } i=1\text{ to } n\\
&\quad t_i\leftarrow(t_{i-1}\times345) \bmod 19997
\end{aligned}
$$
第二个字符串的第 $i\in [1,n]$ 个字符的 ASCII 码为 $97+(t_i \bmod 26)$。
输出格式
一行一个非负整数,表示将第一个字符串转换为第二个字符串的最少代价。
说明/提示
$1\le n\le 10^6,1\le s_0\le 19997$。
> 本题原始满分为 $20\text{pts}$。