Hairetu2
- 2. 問題概要
● 初期値0の1次元配列
● 等間隔に同じ値を足したり引いたりする
クエリを処理する
– X[a], X[a + b], X[a + 2b] … X[a + pb]に
一様に値を足す
- 3. 間隔が大きい時は?
● 間隔が大きければ愚直にやっても問題ない
● 間隔が1とか10だったらやばい
● なんかセグ木っぽい
- 4. セグ木
● seg[i][j][k] := 間隔iのクエリでX[i * k + j]に足さ
れた値
● クエリで足される値はseg[i][j]の中で連続
– セグ木つかえる
● クエリ3の時に呼び出しがiの個数分することに
なる
● i <= 80くらいで取れば良い
- 5. メモリやばい
● 80 * 100,000についてセグ木を作るとMLEする
かもしれない
● 木の更新はクエリごとに一回だから遅延評価す
れば良い
– JOIerならできるはず
● 想定オーダー:O(Q*N/80) = O(Q*80logN)
– だいたいO(10^7)
- 6. ● First AC: hogloid
● AC 数: 6
● Submission数: 38