No.2893 Minahoshi (Hard)
タグ : / 解いたユーザー数 10
作問者 : 👑 seekworser / テスター : 👑 amentorimaru kemuniku
ストーリー
みなほし「LCP array について分かった気がする!」
みなほし「最大の場合は解けたし、きっと最小の場合も簡単に解けるよね?」
問題文
正整数 $N$ が与えられます。a
または b
からなる長さ $N$ の文字列であって
LCP array の要素の総和が最小となるものを構築してください。
LCP array とは
長さ $N$ の文字列 $S$ について、$S$ の $N$ 個の suffix を辞書順でソートした配列を $S$ の suffix array と言います。$i = 1, 2, \dots, N-1$ について、$S$ の suffix array の $i$ 番目の要素と $i+1$ 番目の要素の最長共通接頭辞の長さを求めた配列を $S$ の LCP array (Longest Common Prefix Array) と言います。
この問題はマルチテストケースです。$T$ 個のテストケースについて回答してください。
入力
$T$ $case_1$ $\vdots$ $case_T$
$i = 1, 2, \dots, T$ について、$case_i$ は以下の形式で与えられる。
$N$
制約
- $1 \le T \le 600$
- $2 \le N \le 2 \times 10^5$
- すべてのテストケースについての $N$ の総和は $2 \times 10^5$ 以下である。
- 入力はすべて整数
出力
$T$ 行出力せよ。$i$ 行目には $i$ 番目のテストケースについて、
a
または b
からなる長さ $N$ の文字列であって
LCP array の要素の総和が最小となる文字列を出力せよ。
与えられた $N$ に対して複数の文字列が条件を満たす場合、 いずれを出力しても正解とみなされる。
サンプル
サンプル1
入力
3 2 3 4
出力
ab abb aabb
ab
の LCP array は $[ 0 ]$であり、総和は $0$ です。
abb
の LCP array は $[ 0,\ 1 ]$であり、総和は $1$ です。
aabb
の LCP array は $[ 1,\ 0,\ 1 ]$であり、総和は $2$ です。
いずれも長さ $N$ の a
または b
からなる文字列として考えられる LCP array の総和として最小の値となります。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。