第二回 アルゴリズム実技検定 L - 辞書順最小
問題
長さの数列[A_1, \cdots, A__N]から個の要素を選んで部分数列を作る。 要素を選ぶときは、要素ごとに以上開ける必要がある。 辞書順で最小の数列を求める。
考察
のとき、部分列を作ることはできない。 以下、を仮定する。
同じ数字が複数あり、どちらも採用できるとき、なるべく先の方を採用した方がいい。
1文字目は、から選ぶ必要があり、この中で最小の文字にするとよい。また、最小の文字が複数ある場合はもっとも先にある方を選ぶ。 文字目の引数をとすると、2以上のについて、 文字目はの最小の文字のうちもっとも先のものを貪欲に選べばよい。
区間で最小の文字はセグメント木を使って高速に求められる。