ログインしてください。
公式
A - atcoder < S 解説 by maroonrk
まず,\(S\)>atcoder が初期状態で満たされていれば,\(0\) が答えです.
また,\(S\) が a のみからなる文字列なら,\(-1\) が答えです.
それ以外の場合を考えます.\(S\) を先頭から見て,a 以外の文字が始めて出現する位置が \(k\) 文字目であるとします.
まず,答えは \(k-1\) もしくは \(k-2\) です.
もし \(k-3\) 以下だとすると,\(S\) の先頭 \(2\) 文字は aa になってしまうので,\(S<\)atcoder です.
逆に,\(k-1\) 回操作すれば,\(S\) の先頭まで \(S_k\) を移動させてくることができ,\(S>\)atcoderとなります.
\(k-2\) 回の操作で \(S>\)atcoder になるとすれば,それは \(S_k\) を\(S\) の \(2\) 番目の位置まで移動させた場合のみです.
なので,それで実際に \(S>\)atcoder となるか判定すれば,答えが \(k-1\) か \(k-2\) かわかります.
なお,よく考えると,\(S_k\leq\)t なら \(k-1\) 回,そうでないなら \(k-2\) 回であることもわかります.
計算量は \(O(|S|)\) です.
投稿日時:
最終更新: