No.2986 Permutation Puzzle
レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限
: 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 18
作問者 :
ID 21712
タグ : / 解いたユーザー数 18
作問者 :

問題文最終更新日: 2024-12-13 13:37:01
2024-12-13更新1: "クリックで開く"の文言を書き足し
2024-12-13更新2: レベルを★2から★2.5に上方修正
問題文
行列の各列・各行がの順列で構成されている行列があります
この行列に対して次の操作いずれかを選び実行するを回行い行列を生成します
- 列をつ選び、その列の順列の数字に従って行列の列の位置を並びかえる
- 行をつ選び、その行の順列の数字に従って行列の行の位置を並びかえる
並び替えの疑似コード (クリックで開く)
# A, B, S, T ... 行列
# .At(i, j) ... 行列の i 行目 j 列目の値を参照したり、値を代入したり
# P <- Q ... 右辺 Q から左辺 P への値・行列のコピー
# 行列 S の X 列目を選択して列の位置を並び替える
function reorder_cols_by_col_perm(S, X)
T <- S
for r in range(1...N)
for c in range(1...N)
S.At(r, T.At(c, X)) <- T.At(r, c)
return S
# 行列 S の Y 行目を選択して行の位置を並び替える
function reorder_rows_by_row_perm(S, Y)
T <- S
for r in range(1...N)
for c in range(1...N)
S.At(T.At(Y, r), c) <- T.At(r, c)
return S
# 行列 A から K 回操作して行列 B にする処理(テストケース生成)のイメージ
S <- A
for _ in range(1...K)
e <- random_one(1...2N)
if e <= N
X <- e
S <- reorder_cols_by_col_perm(S, X)
else
Y <- (e - N)
S <- reorder_rows_by_row_perm(S, Y)
B <- S
行列に対して同様の操作を回以下の実行で行列と等しくしてください。 その操作手順を出力してください。
等しくする操作手順が複数通りある場合はどれを出力しても構いません(操作回数を最小にする必要はなく回以下であればどれでもよいです)。
入力
行列,行列の各行・各列はの順列になっている
行列に対してちょうど回の操作で行列を生成している
行列と行列が等しくなっていないものだけをテストケースに選んでいる
出力
行列を行列に等しくするための操作を出力します
操作回数がのとき最初の行にを出力し、続けて操作を行った順番に操作を行分出力してください。
は操作が列か行を表し、列を操作したときは文字"
C
"、行を操作したときは文字"R
"は選択した位置の番号を表します
(例: 列目を選択なら
C 3
、行目を選択ならR 10
)最後に改行してください。
サンプル
サンプル1
入力
4 3 4 1 3 2 2 4 1 3 3 2 4 1 1 3 2 4 4 3 2 1 1 2 4 3 3 4 1 2 2 1 3 4
出力
2 R 1 C 4
この操作手順は次のようになります
操作前他にも手のR 1
C 4
R 4, R 1, C 4, C 2, C 1
の手順でも行列と等しくなるのでこの手を出力してもACになります。
サンプル2
入力
4 3 4 1 3 2 2 4 1 3 3 2 4 1 1 3 2 4 2 4 1 3 1 3 2 4 4 1 3 2 3 2 4 1
出力
1 R 1
サンプル3
入力
7 2 2 1 7 5 4 3 6 6 5 4 2 1 7 3 1 7 6 4 3 2 5 5 4 3 1 7 6 2 4 3 2 7 6 5 1 3 2 1 6 5 4 7 7 6 5 3 2 1 4 5 3 4 6 7 1 2 7 5 6 1 2 3 4 1 6 7 2 3 4 5 4 2 3 5 6 7 1 3 1 2 4 5 6 7 2 7 1 3 4 5 6 6 4 5 7 1 2 3
出力
5 R 5 R 5 C 6 C 5 C 6
サンプル4
入力
10 4 9 8 7 5 1 4 2 10 3 6 3 2 1 9 5 8 6 4 7 10 8 7 6 4 10 3 1 9 2 5 5 4 3 1 7 10 8 6 9 2 1 10 9 7 3 6 4 2 5 8 6 5 4 2 8 1 9 7 10 3 2 1 10 8 4 7 5 3 6 9 7 6 5 3 9 2 10 8 1 4 4 3 2 10 6 9 7 5 8 1 10 9 8 6 2 5 3 1 4 7 7 1 3 5 6 9 10 4 2 8 10 4 6 8 9 2 3 7 5 1 1 5 7 9 10 3 4 8 6 2 2 6 8 10 1 4 5 9 7 3 5 9 1 3 4 7 8 2 10 6 3 7 9 1 2 5 6 10 8 4 9 3 5 7 8 1 2 6 4 10 6 10 2 4 5 8 9 3 1 7 4 8 10 2 3 6 7 1 9 5 8 2 4 6 7 10 1 5 3 9
出力
19 R 2 R 4 R 8 R 7 R 3 C 4 C 4 C 4 C 4 C 4 R 1 R 10 R 7 R 3 R 3 R 9 R 5 R 3 R 9
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。