[伯俊]2096号下り
11040 ワード
質問リンク
https://www.acmicpc.net/problem/2096
問題の説明
に答える
に近づく
難関。
解決する
2つの
困難。
解決する
コード#コード# import sys
read = sys.stdin.readline
n = int(read())
board = [list(map(int, read().split())) for _ in range(n)]
dp_max = [board[0], [0,0,0]]
dp_min = [board[0], [0,0,0]]
for y in range(1, n):
dp_max[1][0] = max(dp_max[0][0], dp_max[0][1]) + board[y][0]
dp_max[1][1] = max(dp_max[0]) + board[y][1]
dp_max[1][2] = max(dp_max[0][1], dp_max[0][2]) + board[y][2]
dp_max[0] = dp_max[1][:]
dp_min[1][0] = min(dp_min[0][0], dp_min[0][1]) + board[y][0]
dp_min[1][1] = min(dp_min[0]) + board[y][1]
dp_min[1][2] = min(dp_min[0][1], dp_min[0][2]) + board[y][2]
dp_min[0] = dp_min[1][:]
print(max(dp_max[0]), min(dp_min[0]))
Reference
この問題について([伯俊]2096号下り), 我々は、より多くの情報をここで見つけました
https://velog.io/@leehj8896/백준-2096번-내려가기
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
read = sys.stdin.readline
n = int(read())
board = [list(map(int, read().split())) for _ in range(n)]
dp_max = [board[0], [0,0,0]]
dp_min = [board[0], [0,0,0]]
for y in range(1, n):
dp_max[1][0] = max(dp_max[0][0], dp_max[0][1]) + board[y][0]
dp_max[1][1] = max(dp_max[0]) + board[y][1]
dp_max[1][2] = max(dp_max[0][1], dp_max[0][2]) + board[y][2]
dp_max[0] = dp_max[1][:]
dp_min[1][0] = min(dp_min[0][0], dp_min[0][1]) + board[y][0]
dp_min[1][1] = min(dp_min[0]) + board[y][1]
dp_min[1][2] = min(dp_min[0][1], dp_min[0][2]) + board[y][2]
dp_min[0] = dp_min[1][:]
print(max(dp_max[0]), min(dp_min[0]))
Reference
この問題について([伯俊]2096号下り), 我々は、より多くの情報をここで見つけました https://velog.io/@leehj8896/백준-2096번-내려가기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol