1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 二次元DPメニュー(言語選択)
  4. 問題一覧 CoffeeScript(Beta)編
  5. 二次元 dp 応用 CoffeeScript(Beta)編

二次元DPメニューのサムネイル
二次元 dp 応用 CoffeeScript(Beta)編(paizaランク S 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

N 個のマスが横一列にならんでいます。
左から i 番目のマスをマス i とします。
あるマス i から右向きに 1 マス移動するとマス i+1 に、左向きに 1 マス移動するとマス i-1 に移動します。

あなたは最初マス 1 から右向きに移動を開始します。
あなたは以下の 2 種類の操作を、任意の順番で任意の回数だけ行うことができます。
ただし、すべての操作を終えた後、すべてのマスで必ず 1 度ポイントを取得していなければなりません。

操作 1 : いまの進行方向に 1 マス移動する。ただし、マスの外 (マス 0, マス N+1) にでるような操作を行うことはできない。
操作 2 : 進行方向が右向きのときのみこの操作を行える。いまいるマス i で一度もポイントを獲得していなければ、A_i ポイントを獲得する。その後、進行方向を左向きにする。
操作 3 : 進行方向が左向きのときのみこの操作を行える。いまいるマス i で一度もポイントを獲得していなければ、B_i ポイントを獲得する。その後、進行方向を右向きにする。
操作 4 : 進行方向が右向きのときのみこの操作を行える。いまいるマス i で一度もポイントを獲得していなければ、C_i ポイントを獲得する。進行方向の変更はない。
操作 5 : 進行方向が左向きのときのみこの操作を行える。いまいるマス i で一度もポイントを獲得していなければ、D_i ポイントを獲得する。進行方向の変更はない。

すべての操作後、得られるポイントの総和の最大値を求めてください。

入力例 1 では、例えば以下のように行動できます。
・最初進行方向は右でマス 1 にいる。操作 4 を行う。2 ポイント獲得する。
・操作 1 を 3 回行い、マス 4 に移動する。
・操作 2 を行う。7 ポイント獲得し、進行方向を左向きに変更する。
・操作 1 を 1 回行い、マス 3 に移動する。
・操作 5 を行う。10 ポイント獲得する。
・操作 1 を 1 回行い、マス 2 に移動する。
・操作 3 を行う。8 ポイント獲得し、進行方向を右向きに変更する。
このように行動したとき、獲得したポイントの総和は 27 です。
28 ポイント以上獲得できる行動方法は存在しないため、27 を出力します。

入力される値

入力は以下のフォーマットで与えられます。

N
A_1 A_2 ... A_N
B_1 B_2 ... B_N
C_1 C_2 ... C_N
D_1 D_2 ... D_N


・1 行目には、マスの個数を表す整数 N が与えられます。
・2 行目には、数列 A の各要素が空白区切りで与えられます。
・3 行目には、数列 B の各要素が空白区切りで与えられます。
・4 行目には、数列 C の各要素が空白区切りで与えられます。
・5 行目には、数列 D の各要素が空白区切りで与えられます。
・入力は合計で 5 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

すべての操作後、得られるポイントの総和の最大値を求めてください。
最後は改行し、余計な文字、空行を含んではいけません。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・2 ≦ N ≦ 1500
・-10^9 ≦ A_i, B_i, C_i, D_i ≦ 10^9

入力例1

4
5 10 1 7
-9 8 7 1
2 -6 -5 -7
-5 -5 10 6

出力例1

27

入力例2

10
-59463581 -441216195 664663950 -48690079 211041533 70314662 733395356 189158149 296108056 782441423
-803191698 -730975916 487951551 169754896 -844489109 798986837 450996230 -501290124 -59571150 149308272
920877646 -562513357 -494693097 216069648 -351157392 355261519 -843509611 256865554 -884625301 -406817826
789935222 -327266469 -938684199 -394587124 -955622455 -863005501 570327903 333513152 -87161254 230889717

出力例2

4406803981

入力例3

2
6 -9
5 -6
6 -7
-9 0

出力例3

-1

問題一覧へ戻る

ページの先頭へ戻る