NISHIO Hirokazu[Translate]
PAST2K
PAST2K
考えたこと
変更と削除を行うことで対応の取れた括弧にする問題
文字ごとに変換コストと削除コストが決まっている
N=3000
変換してから削除することにメリットはないので「何もしない、変換する、削除する」の三択
括弧をプラマイ1、削除を0とすれば「X番目までの和」をYとしてDPができそう
対応した括弧は、途中で負にならず、最後で0になる
値の範囲は0〜N
N^2なので間に合う
AC
python
def solve(N, S, CS, DS): INF = 9223372036854775807 table = [INF] * (N + 1) # table[N] is sentinel table[0] = 0 for i in range(N): new_table = [INF] * (N + 1) if S[i] == "(": d = 1 else: d = -1 for j in range(N): new_table[j] = min( table[j - d], # no change table[j + d] + CS[i], # change table[j] + DS[i], # delete ) table = new_table return table[0]


"Engineer's way of creating knowledge" the English version of my book is now available on [Engineer's way of creating knowledge]

(C)NISHIO Hirokazu / Converted from [Scrapbox] at [Edit]