ほぼ静的な計画法

競技プログラミングで解いた問題の解法とコードを晒していくページ。ややマイナーなC♯。

AOJ 0227 (Thanksgiving : お客様大感謝祭)

【問題】

https://onlinejudge.u-aizu.ac.jp/problems/0227

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0227

【解説】

野菜の数nと1つの袋に詰められる野菜の数mが与えられ、m個の野菜が入っている袋の中のうち最も安い野菜の金額を0として、野菜の金額の合計を求める。

金額の合計を最も安い金額とするためには、袋に詰めていない野菜のうち最も金額の高いm個を選び袋に詰めていけばよい。その場合、無料になる野菜は金額を高い順に取っていったうちのm×k(k=1,2,…,n÷m)番目である。0indexの配列とした場合、上記のindexは金額の降順で並べたもののうち、indexをmで割った余りがm-1となるものなので、その野菜以外の金額をsumすればよい。

【コード】