ABC347

ardririy
·

今回のEっぽい問題が出るとDiffが下がる現象勘弁してくれ

A - Divisible

https://atcoder.jp/contests/abc347/submissions/51800839

B - Substring

作った部分文字列を全部setに突っ込む

https://atcoder.jp/contests/abc347/submissions/51811274

C - Ideal Holidays

謎 解説読んでもしっくりこない...

D - Popcount and XOR

DPっぽいことをすればいい。

dp[i][j][k] := 上からi文字目時点でXのpop countがj、Yのpop countがkであるようなX, Yの組

iは60桁で固定すればいい。答えを一つ出力なので新たに出てきたら適当に上書きするのが楽。

https://atcoder.jp/contests/abc347/submissions/51852441

E - Set Add Query

こういう区間加算の問題のインフレが激しくてこまる。少なくとも2000人が溶けるような問題ではないと思うんですけど...

ちゃんと考察すればそんなに難しくなかった。あるタイミングでの配列の状態を得ようとすると大変だが、実際には配列の最終状態にしか興味がないので、どのタイミングで加算しても良い。ある値が集合に入れられたタイミングを保持しておけばその値が抜けるタイミングでどれだけ足せばよいかは、累積和を用いてO(1)でわかる。よって全体でO(Qlog(N))で解くことができる(logはsetへの追加や削除の分)。