No.3441 Sort Permutation 2
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 50
作問者 : 👑
potato167
/ テスター :
noya2
タグ : / 解いたユーザー数 50
作問者 : 👑
potato167
/ テスター :
noya2
問題文最終更新日: 2026-02-05 18:13:32
yukicoder contest 492の他の問題:
問題文
正整数 $N$ と、$(1, 2, \dots, N)$ の順列 $P = (P_{1},P_{2},\dots,P_{N})$ が与えられます。
$k = 1, 2, \dots, N - 1$ について、以下の問いに答えてください。
Alice は以下の操作を繰り返し、$P$ を昇順ソートします。
- $1$ 以上 $N$ 以下の整数 $i, j(i\neq j)$ を選び、$P_{i}$ と $P_{j}$ を入れ替える。このとき、$|i - j|$ が $k$ の倍数なら、Alice は $1$ ダメージ受ける。
Alice は最小の操作回数で $P$ を昇順ソートし、その上で受けるダメージを最小化する行動をします。
Alice が受けるダメージの和を求めてください。
制約
- $2\leq N\leq 2\times 10^{5}$
- $(P_{1}, P_{2},\dots,P_{N})$ は $(1,2,\dots,N)$ の順列
- 入力は全て整数
入力
$N$
$P_{1}$ $P_{2}$ $\dots$ $P_{N}$
出力
$N - 1$ 行出力してください。
$i$ 行目には $k = i$ であるときの答えを出力してください。
サンプル
サンプル1
入力
6 6 4 5 2 3 1
出力
3 2 0 0 1
$k = 2$ のときの答えを考えます。
例えば以下のように $3$ 回操作をすると $P$ を昇順ソートできます。
- $(i, j) = (2, 4)$ として操作する。操作後、$P = (6, 2, 5, 4, 3, 1)$ となる。
- $(i, j) = (1, 6)$ として操作する。操作後、$P = (1, 2, 5, 4, 3, 6)$ となる。
- $(i, j) = (3, 5)$ として操作する。操作後、$P = (1, 2, 3, 4, 5, 6)$ となる。
上記の $3$ 回の操作のうち、$1$ 回目と $3$ 回目の操作で Alice はそれぞれ $1$ ダメージ受けるため、Alice は合計 $2$ ダメージ受けます。
このように操作することが最小の操作回数で $P$ を昇順ソートし、その上で受けるダメージの和を最小化する行動のひとつであるため、$2$ 行目には $2$ を出力します。
サンプル2
入力
4 1 2 3 4
出力
0 0 0
サンプル3
入力
11 10 8 5 11 7 6 3 2 4 1 9
出力
6 3 2 0 0 1 0 0 1 0
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。