Official

J - 数列の反転 / Reverse Array Editorial by blackyuki


問題を以下のように言い換えます。

\(N\) 枚のカードがあり、\(i\) 枚目の表には \(N-i+1\)、裏には \(N+i\) が書かれている。出力クエリでは指定されたカードの表裏を判定せよ。反転クエリでは最初の \(k\) 枚の表裏を反転せよ。

出力クエリで \(k\) 枚目のカードの表裏を聞かれているとします。このとき答えに影響するのは、出力クエリより前の反転クエリのうち、\(k\) 枚以上を反転させたクエリです。具体的には、この回数が偶数なら表、奇数なら裏を向いています。この操作は一点加算区間和取得なので、BIT と呼ばれるデータ構造を使えばよいです。

posted:
last update: