mini notes

競技プログラミングの解法メモを残していきます。

yukicoder No.817 Coin donation (★2.5)

問題:No.817 Coin donation - yukicoder

解答:#501352 (C++14) No.817 Coin donation - yukicoder

解法:i円の硬貨が何枚あるかを累積的に管理し、個数がk以上となるときのiを出力すればよい。ただし、硬貨の種類の上限が109であるため、全ての種類の硬貨の枚数を管理することはできない。

クエリでAi~Bi円の硬貨を入れるという操作が与えらるが、これをimos法と同じアイディアで管理する。また枚数の更新はこのクエリのAi、Biのタイミングのみで行うこととし、その間を計算で補間するとうまくいく。

座標圧縮を使う方法もあるらしい。