はじめに
カテゴリー競プロ初中級者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日