Mo's algorithmを用いた方法を説明します.
問題はこちら
問題概要
英小文字からなら長さの文字列について「文字目から文字目までからなる部分文字列を任意に並べ替えたものの中で辞書順最小である文字列の文字目を出力せよ」という個のクエリに答えよ.解説
Mo's algorithmについては以下の記事を見てください.
kanpurin.hatenablog.com
- 更新クエリがない
- の答え(状態)からの答え(状態)が高速に計算できる.
- オフラインで処理できる.
今回の問題はこれを満たしているのでMo's algorithmが使える.
の各文字の個数を持っておけばよい.区間の伸縮もで計算できる.計算量はアルファベットサイズをとして
個数の保持にBITを用いれば,となり,でも解ける.