はじめに
カテゴリー競プロ初中級者100問では、Qiita
にて@e869120
さんがレッドコーダーが教える、競プロ・AtCoder上達のガイドライン【中級編:目指せ水色コーダー!】としてまとめられている100問をPython
で解いています。
全問題の一覧はこちらです
問題
https://atcoder.jp/contests/joi2015ho/tasks/joi2015ho_b
この問題は動的計画法を用いて解くことができます。
方針
基本的に公式の解説通りです。区間DPと呼ばれる実装を行います。データが円環担っているため、データを2回並べることで一次元のデータとして扱います。
コード
maspyさんのコードをコメントを入れながら読ませていただきました。
最後のターンから考えていきます。最終的にJOIくんが得るスコアをdp
として格納していきます。dp
はターン別に用意せずに使い回すのでサイズはN
となります。
最後から数えてn
ターン目にはn
個のピースが残っています。そのパターンはi
を変数としてA[i:i+n]
で表せます。これに対させて、最終的にJOIくんが得るスコアをdp[i]
に格納していきます。
1 | import sys |
記事情報
- 投稿日:2020年5月16日
- 最終更新日:2020年5月16日