結果
問題 |
No.2591 安上がりな括弧列
|
ユーザー |
![]() |
提出日時 | 2025-04-27 00:44:48 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 40 ms / 2,000 ms |
コード長 | 663 bytes |
コンパイル時間 | 11,272 ms |
コンパイル使用メモリ | 242,496 KB |
実行使用メモリ | 20,672 KB |
最終ジャッジ日時 | 2025-04-27 00:45:00 |
合計ジャッジ時間 | 12,795 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 23 |
ソースコード
package main import . "fmt" func main() { var n int var s string Scan(&n, &s) a := make([]int, 2*n) for i := range a { Scan(&a[i]) } dp := make([][]int, 2*n+1) for i := range dp { dp[i] = make([]int, n+1) for j := range dp[i] { dp[i][j] = 1e18 } } dp[0][0] = 0 for i, c := range s { for j, x := range dp[i] { if c == '(' { if j+1 <= n { dp[i+1][j+1] = min(dp[i+1][j+1], x) } if j > 0 { dp[i+1][j-1] = min(dp[i+1][j-1], x+a[i]) } } else { if j+1 <= n { dp[i+1][j+1] = min(dp[i+1][j+1], x+a[i]) } if j > 0 { dp[i+1][j-1] = min(dp[i+1][j-1], x) } } } } Println(dp[2*n][0]) }