E - Prefix Equality Editorial
by
hamamu
に使われている数値を、 での登場順に となるよう、 数値を振り直します。 にしか登場しない数値は、 で使った数値より大きな数値を適当に振ります。
すると、 の各集合は、 種類数 の時 になります。 の各集合との一致を「種類数と最大値の一致」のみで判定可能になり、簡便です。
あらかじめ に対し、
- の先頭 項による集合の種類数
- の先頭 項による集合の種類数と最大値
を求めておけば、各クエリに で答えられます。
計算量は、数値の振り直しや種類数のカウントにC++のmapやsetを使うと 、unordered_mapなどのハッシュを使うと です。
posted:
last update: