以下の内容はhttps://jupiro.hatenablog.com/entry/2020/05/25/203057より取得しました。


Educational Codeforces Round 16 - E. Generate a String

問題リンク

なんか適当なdpをやってもACは出たんですが、正当性が見抜けないのでそうじゃない方の解説で。

解説

dp[i] := i文字作るときの最小コスト

としましょう。

パターンとしては、1文字追加、倍にする、削除、が考えられるが、1文字追加した後に1文字削除は明らかに無駄である。

よって、文字削除は倍にした後の直後だと分かる。

このことから、倍にしたときのコストを、スライド最小値ぽく、deque内を(indexの距離を考慮した)単調増加のようにすれば、全体で O(n)で解けました。

提出コード

codeforces.com

まとめ

適当にやったdpの正当性が全くわからない…(嘘かもしれない)

dijkstraを落とすための制約だというのは分かる。




以上の内容はhttps://jupiro.hatenablog.com/entry/2020/05/25/203057より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14