貨物列車 (Freight Train)
日本語
Language
Contribute a translation- Time limit
- 2000 ms
- Memory limit
- 1024 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
IOI 鉄道は \(1\) 本の鉄道路線を運営している.IOI 鉄道線には一直線上に並んだ \(N\) 個の駅があり,順に \(1\) から \(N\) までの番号が付けられている.各 \(i\) (\(1 \leqq i \leqq N - 1\)) に対して,駅 \(i\) と駅 \(i + 1\) の間は線路で結ばれており,その長さは \(1\) である.
IOI 鉄道は貨物を取り扱っている.駅 \(2, 3, \ldots, N\) には貨物が \(1\) つずつ置かれており,駅 \(i\) (\(2 \leqq i \leqq N\)) に置かれている貨物の価値は \(A_i\) である.
IOI 鉄道は貨物列車を \(1\) 編成所有している.この列車は最初駅 \(1\) におり,IOI 鉄道線上を双方向に走行できる.それぞれの駅では,その駅に置いてある貨物を列車に積むことや,列車に積まれている貨物を下ろし,その駅に置いておくことができる.
この貨物列車を用いて 駅 \(2, 3, \ldots, N\) に置かれている貨物を駅 \(1\) に輸送したい.ただし,この列車には貨物を \(W\) 個以下しか載せることができない.すなわち,どの時点においても列車に貨物が \(W + 1\) 個以上載っていることは許されない.また,この列車は燃料の都合上,最大でも総距離 \(D\) しか走行することができない.そのため,すべての貨物を駅 \(1\) に輸送することはできないかもしれない.
IOI 鉄道の社長である JOI くんは,この条件のもと適切に貨物列車を走行させることで,最終的に駅 \(1\) に置かれている貨物の価値の合計をなるべく大きくしたい.
貨物列車の情報と各駅に置かれている貨物の情報が与えられたとき,最終的に駅 \(1\) に置かれている貨物の価値の合計として達成可能な最大値を求めるプログラムを作成せよ.
Constraints
- \(2 \leqq N \leqq 450\).
- \(1 \leqq W \leqq N - 1\).
- \(2 \leqq D \leqq N^2 - N\).
- \(1 \leqq A_i \leqq 1\,000\,000\) (\(2 \leqq i \leqq N\)).
- 入力される値はすべて整数である.
Subtasks
- (\(6\) 点) \(W = 1\),\(A_i = 1\) (\(2 \leqq i \leqq N\)).
- (\(9\) 点) \(A_i = 1\) (\(2 \leqq i \leqq N\)).
- (\(24\) 点) \(W = 1\).
- (\(13\) 点) \(N \leqq 15\).
- (\(24\) 点) \(N \leqq 50\).
- (\(24\) 点) 追加の制約はない.
Input
入力は以下の形式で与えられる.
\(N\) \(W\) \(D\)
\(A_2\) \(A_3\) \(\cdots\) \(A_N\)
Output
最終的に駅 \(1\) に置かれている貨物の価値の合計として達成可能な最大値を \(1\) 行で出力せよ.
Examples
4 1 10 1 1 1
2
例えば,以下のように貨物列車を走行させると最終的に駅 \(1\) に置かれている貨物の価値の合計を \(2\) にすることができる.
最初,貨物列車は駅 \(1\) にいる.
- 貨物列車を駅 \(2\) に走行させる.
- 駅 \(2\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(1\) に走行させる.
- 貨物列車に積まれている価値 \(1\) の貨物を駅 \(1\) に置く.
- 貨物列車を駅 \(4\) に走行させる.
- 駅 \(4\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(1\) に走行させる.
- 貨物列車に積まれている価値 \(1\) の貨物を駅 \(1\) に置く.
列車の走行した総距離は \(8\) であり,列車が総距離 \(10\) 以下しか走行できないという条件を満たしている.
このとき,最終的に駅 \(1\) に置かれている貨物の価値の合計は \(2\) である.最終的に駅 \(1\) に置かれている貨物の価値の合計を \(3\) 以上にすることはできないため,\(2\) を出力する.
この入力例はすべての小課題の制約を満たす.
7 3 16 1 1 1 1 1 1
5
例えば,以下のように貨物列車を走行させると最終的に駅 \(1\) に置かれている貨物の価値の合計を \(5\) にすることができる.
最初,貨物列車は駅 \(1\) にいる.
- 貨物列車を駅 \(5\) に走行させる.
- 駅 \(5\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(6\) に走行させる.
- 駅 \(6\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(1\) に走行させる.
- 貨物列車に積まれている \(2\) つの価値 \(1\) の貨物をすべて駅 \(1\) に置く.
- 貨物列車を駅 \(2\) に走行させる.
- 駅 \(2\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(3\) に走行させる.
- 駅 \(3\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(4\) に走行させる.
- 駅 \(4\) に置かれている価値 \(1\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(1\) に走行させる.
- 貨物列車に積まれている \(3\) つの価値 \(1\) の貨物をすべて駅 \(1\) に置く.
列車の走行した総距離は \(16\) であり,列車が総距離 \(16\) 以下しか走行できないという条件を満たしている.
このとき,最終的に駅 \(1\) に置かれている貨物の価値の合計は \(5\) である.最終的に駅 \(1\) に置かれている貨物の価値の合計を \(6\) 以上にすることはできないため,\(5\) を出力する.
この入力例は小課題 \(2, 4, 5, 6\) の制約を満たす.
5 2 12 40 30 20 10
100
例えば,以下のように貨物列車を走行させると最終的に駅 \(1\) に置かれている貨物の価値の合計を \(100\) にすることができる.
最初,貨物列車は駅 \(1\) にいる.
- 貨物列車を駅 \(5\) に走行させる.
- 駅 \(5\) に置かれている価値 \(10\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(4\) に走行される.
- 駅 \(4\) に置かれている価値 \(20\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(2\) に走行させる.
- 貨物列車に積まれている価値 \(10\) の貨物と価値 \(20\) の貨物を駅 \(2\) に置く.
- 駅 \(2\) に置かれている価値 \(40\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(3\) に走行させる.
- 駅 \(3\) に置かれている価値 \(30\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(1\) に走行させる.
- 貨物列車に積まれている価値 \(30\) の貨物と価値 \(40\) の貨物を駅 \(1\) に置く.
- 貨物列車を駅 \(2\) に走行させる.
- 駅 \(2\) に置かれている価値 \(10\) の貨物と価値 \(20\) の貨物を貨物列車に積む.
- 貨物列車を駅 \(1\) に走行させる.
- 貨物列車に積まれている価値 \(10\) の貨物と価値 \(20\) の貨物を駅 \(1\) に置く.
列車の走行した総距離は \(12\) であり,列車が総距離 \(12\) 以下しか走行できないという条件を満たしている.
このとき,最終的に駅 \(1\) に置かれている貨物の価値の合計は \(100\) である.最終的に駅 \(1\) に置かれている貨物の価値の合計を \(101\) 以上にすることはできないため,\(100\) を出力する.
この入力例は小課題 \(4, 5, 6\) の制約を満たす.
5 1 11 2 7 1 8
10
この入力例は小課題 \(3, 4, 5, 6\) の制約を満たす.
9 3 14 54640 754112 604290 105866 591907 801383 502975 379373
2214425
この入力例は小課題 \(4, 5, 6\) の制約を満たす.
Notes
JOI 2023 · JCIOI · CC BY-SA 4.0
Tags
No tags yet