結果
| 問題 |
No.2591 安上がりな括弧列
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 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])
}
ID 21712