ゆるふわ競プロ

Javaでゆるゆる競プロしています.忘れっぽいのでメモ用,復習用

ABC035 C (いもす法)

atcoder.jp

いもす法

いもす法聞いたことがあるだろうか。私はこの問題で初めてであった。多次元でもできるようが今回は一次元での問題なので理解することができた。
解説こちらのAtCoderの公式解説を見るのが一番わかりやすかった。(他のサイトも探したが次元の拡張が起こっておりこの問題のレベルを越していた)

すごく簡単に説明すると配列の3から7まで要素に対して4を加える操作をする時にわざわざ3~7までの5個の要素に対して+4するのではなく最初の3に+4しておき最後の7の次の数字8番目の要素に-4しておく考えだ。

最終的には累積和をとって答えを出す。配列の5番目の要素の数字がいくつか聞かれた際には、和をとるので配列の1番目から(1index)5番目の数字の全ての和が答えとなる。

言われてみればそうだなとい感じだが実際に知らないとかけないやり方であった。 今回この問題にあえてよかったと思う。

f:id:topaz1-3:20190219143642p:plain
TLE
いすお法を使わずに全部に一を追加していった結果TLEと出てしまった。(Nの値が小さい時は通るので部分点はもらうことができた.)