2023年1月11日水曜日

Codeforces Round #842 (Div. 2)

 Cまで三完。早めにD捨てていればEをACできたと思うけど、D解けなかったのもまずい。

コンテスト後のツイート

D. Lucky Permutation

 解法ツイートを見てAC。グラフの問題だろうと思ったのに、どういうグラフを考えれば良いか分からなくなった。

 頂点を1~n、iからP[i]へ辺が出ているグラフを考えると、いくつかのサイクルで表されたグラフとなる。そして、ソートされたものに戻すためには、それぞれの連結成分について、連結成分数-1回だけかかるので、それらを足し合わせれば良い。

 この問題では、1, 2, 3, 5, 4, 6, 7 のように一ヶ所逆転した部分があるものにしたい。ソートされた状態にした後、もう一回操作すれば作れるのは明らか。

 もっと少ない回数でできるか、というと、「iとi+1が同じ連結成分に含まれる」という箇所があれば一回省略することができる。これは、さっき作ったグラフのiとi+1が繋がっているものを互い違いに付け替えることになり、サイクルが二つに分かれるので操作回数が一回減る。



0 件のコメント:

コメントを投稿