No.3269 Leq-K Partition
レベル : / 実行時間制限 : 1ケース 6.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 28
作問者 :
apricity
/ テスター :
遭難者
タグ : / 解いたユーザー数 28
作問者 :


問題文最終更新日: 2025-08-23 22:19:47
問題文
長さ $N$ の整数列 $A = (A_1, A_2, \dots, A_N)$ が与えられます. $k = 1,2, \dots, N$ について以下の問題を解いてください.
- $A$ を空でない 連続 部分列に分割することを考えます. $A$ の各要素はちょうど $1$ つの部分列に属している必要があります. 全ての部分列について,現れる値の種類数が $k$ 以下となるように分割する際に,最小で何個の部分列に分割する必要があるか求めてください.
入力
$N$ $A_1\ A_2\ \dots\ A_N$
- 入力は全て整数
- $1 \le N \le 10^5$
- $1 \le A_i \le N$
出力
$N$ 行出力してください. $i$ 行目 $(1 \le i \le N)$ には, $k = i$ に対する答えを出力してください.
サンプル
サンプル1
入力
10 1 2 2 3 4 6 5 7 5 4
出力
9 5 3 2 2 2 1 1 1 1
- $k=1$ の場合,例えば $(1),(2,2),(3),(4),(6),(5),(7),(5),(4)$ のように $9$ 個の部分列に分割することができます.
- $k=2$ の場合,例えば $(1,2),(2,3),(4,6),(5,7),(5,4)$ のように $5$ 個の部分列に分割することができます.
- $k=3$ の場合,例えば $(1,2,2,3),(4,6,5),(7,5,4)$ のように $3$ 個の部分列に分割することができます.
- $k=4$ の場合,例えば $(1,2,2,3,4),(6,5,7,5,4)$ のように $2$ 個の部分列に分割することができます.
- $k=5$ の場合,例えば $(1,2,2,3,4,6),(5,7,5,4)$ のように $2$ 個の部分列に分割することができます.
- $k=6$ の場合,例えば $(1,2,2,3,4,6,5),(7,5,4)$ のように $2$ 個の部分列に分割することができます.
- $k\ge 7$ の場合,例えば $(1,2,2,3,4,6,5,7,5,4)$ のように $1$ 個の部分列に分割することができます.
サンプル2
入力
1 1
出力
1
サンプル3
入力
8 1 2 3 4 5 6 7 8
出力
8 4 3 2 2 2 2 1
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。