No.1172 Add Recursive Sequence - yukicoder
この問題のことです
頭が悪くて解説がすぐには理解できなかったので整理用にメモ
めんどうなので は 0-based-index, は反転して考えます
に足す
というのを
に を足して
から を引く
と考えると
に の定数倍を足すことを考えればいいです
足される数列を左から見ていきます
ほんとに に足したら かかってしまうので, とりあえず にだけ足すことにします
に対して足すクエリをすべて処理した後の が
みたいにかけたとします ( はいい感じの定数倍)
ここから
を求めることができれば, またクエリの左端が であるようなものについてだけ足すことで を求めることができます
ここで, について
という数列を考えてみます ()
ここから
を求めることはできるでしょうか?
線形性があるので
と書けます (適当に代入してまとめれば出ます)
ということで, を持ちながらクエリを左から足していけば求まります
を 項常に持っているので, クエリでも 箇所に足すことになります
これは を 項目まで前計算しておけば で簡単に処理できます
の遷移も でできるので, 全体で ですべてのクエリを処理することができます
実装 (せっかくなので雑に構造体にしてみた)