AtCoder Beginner Contest 223 F 問題 Parenthesis Checking
問題
提出解答
問題の概要
からなる長さ
の文字列
が与えられる. 以下の
個のクエリを順に処理せよ.
の
文字目と
文字目を入れ替える.
の
文字目から
文字目までの部分文字列が正しい文字列かどうかを判定する.
制約
は
からなる長さ
の文字列
解法
からなる文字列
において, 以下は同値である.
は正しい文字列
- 列
を
ならば,
,
ならば,
とした列とし, 累積和を
としたとき, 以下が成立する.
(※
と同値)
そして, 更新は1点, 取得は区間であることから, 以下のモノイド を搭載したセグメント木を用いることで高速に処理できる.
ただし,
- 演算
は
- 単位元は
ここで, に対して,
は累積和,
は累積和の最小値を表している. そして,
を
に,
を
に対応させることで, 整合性を持たせられる.
計算量は, である.