Codeforces Round 498(Div.3) D. Two Strings Swaps
問題概要
長さ の2つの文字列a,bが与えられる。文字列はともに小文字のアルファベットから構成される。
はじめに、好きな回数だけ以下の置換操作を行うことができる。
- となる を一つ選び、 を任意のアルファベットに置換する
その後、以下の3つの操作を繰り返して文字列a,bを等しくしたい。
- となる を一つ選び、 と を入れ替える
- となる を一つ選び、 と を入れ替える
- となる を一つ選び、 と を入れ替える
最初の置換操作の回数の最小値を求めよ。
制約
解法
- となる を一つ選び、 と を入れ替える
- となる を一つ選び、 と を入れ替える
- となる を一つ選び、 と を入れ替える
の3つの操作をすることによって、{, , , }を自由に入れ替えることができる。
また、 のとき、{, , , }と{, , , }は独立している。
よって、について置換操作の回数を計算して足し合わせればよい。
{, , , }の4つの文字が全て等しければ置換操作はしなくてよい。
また、{, , , }に2つの等しい文字が含まれているときも置換操作はしなくてよい。
そうでないとき、との片方だけを置換すればいいか、両方とも置換する必要があるかを調べればよい。
[追記:解法が一部間違っていたので訂正しました]