geam1113’s diary

主にAtcoderのコンテストの備忘録を書きます。AtCoder緑と水色を行ったり来たりしています。

ABC221 参加記録

コンテスト中AC:A〜D

 

D - Online Games

A_i,B_iの制約が小さければ、以下のimos法で解けます。

i人目について、配列CC_{A_i}に+1、C_{A_i + B_i}に-1する。

・最後に、iを2から最大日数まで順にC_i+=C_{i-1}する

i日目のログイン数はC_i人である。

 

今回制約が大きいので配列保持することはできません。

このときは、イベント情報のみ保持するimos法をおこないます。

 

配列Dに以下のような情報を追加していきます。

(A_i,\ 1)

(A_i+B_i,\ -1)

これはD_i=(T_i,S_i)のとき、時間T_iに人数がS_i人増えることを表します。

 

このイベントをT_iの昇順にソートし、S_iに対して順にS_i+=S_{i-1}します。

 

こうすると、T_{i+1}-T_i日間の間、S_i人いることになるので、答えを求めることができます。

 

提出コード:https://atcoder.jp/contests/abc221/submissions/26295581