Problem J:Char Swap
怒髪@dohatsutsu
問題概要
文字列Sが与えられます。
隣り合った2つの文字をスワップする操作を行うことで、文字列Sを回文にしたいです。
最小で何回のスワップを行う必要があるでしょうか?
考察
文字列Sが次のような文字列だった場合について考えます。
a a b c b c a d d a
考察
説明をより分かりやすくするため、一部の文字の色を変えます。
a は4回出現しているので、左から見て行って最初の2個のa は赤色に染めます。
b は2回出現しているので、左から見て行って最初の1個のb は赤色に染めます。
c と d も同様です。
a a b c b c a d d a
考察
この文字列を最小のスワップ回数で回文にするためには、
赤い文字をすべて最初の5文字として使わなければなりません。
これは、同じアルファベットが隣り合っているときにそのアルファベットどうしをスワップす
ることがあり得ないためです。
a a b c b c a d d a
↓
? ? ? ? ? ? ? ? ? ?
考察
とりあえず、赤い文字が左側にくるように、スワップしていくと、こうなります。
a a b c b c a d d a
↓
a a b c d b c a d a
考察
あとは、右半分の文字が、左半分の文字をRverseした状態にするための最小回数を求
めるだけです。( 反対に、左半分を右半分に合わせるようにしてもよいです。)
a a b c d b c a d a
↓
d c b a a ---- b c a d a
考察
これは、蟻本にあるバブルソートの交換回数と同じ方法で求めることができます。
p162にのっています。
謝罪
既出だったらしいです。すいませんでした。
AC数 ÷提出数 = 6÷16 = 0.3750 … ( 38% )
First AC
maroonさん 80分
テスター
dohatsu 61行
arrows 75行
kzyKT 55行
sate 79行
uku 69行

More Related Content

PDF
Anagram
ODP
正規表現
PDF
RUPC2017:J解説
PDF
RUPC2017:全体の講評
PDF
L : 解説
PDF
K : 解説
PDF
M : 解説
PDF
I : Traffic Tree
Anagram
正規表現
RUPC2017:J解説
RUPC2017:全体の講評
L : 解説
K : 解説
M : 解説
I : Traffic Tree

More from Takumi Yamashita (20)

PDF
Deposited Ranges
PDF
RUPC2017:F解説
PDF
RUPC2017:L解説
PDF
RUPC2017:G解説
PDF
RUPC2017:Dの解説
PDF
RUPC2017:Bの解説
PDF
RUPC2017:Cの解説
PDF
RUPC2017:I解説
PDF
RUPC2017:Aの解説
PDF
RUPC2017:Hの解説
PDF
RUPC2017:K解説
PDF
RUPC2017:E解説
PDF
RUPC2017:M問題
PDF
0: 全体の講評
PDF
H : hegemony get
PDF
G : 解説
PDF
F : 解説
PDF
E : 解説
PDF
D : 解説
PDF
C : 解説
Deposited Ranges
RUPC2017:F解説
RUPC2017:L解説
RUPC2017:G解説
RUPC2017:Dの解説
RUPC2017:Bの解説
RUPC2017:Cの解説
RUPC2017:I解説
RUPC2017:Aの解説
RUPC2017:Hの解説
RUPC2017:K解説
RUPC2017:E解説
RUPC2017:M問題
0: 全体の講評
H : hegemony get
G : 解説
F : 解説
E : 解説
D : 解説
C : 解説
Ad

J : 解説