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