Skip to content

ABC-350

A

URLURL\:\to

解法


B

URLURL\:\to

解法


C

URLURL\:\to https://atcoder.jp/contests/abc350/tasks/abc350_c

#貪欲法

N = Integer().content
A = IntegerList().content
ans = []
for i in range(N):
while i+1!=A[i]:
ans.append((i+1, A[i]))
tmp = A[A[i]-1]
A[A[i]-1] = A[i]
A[i] = tmp
print(len(ans))
for i in ans:
print(*i)

解法

i(0N1)i(0 \to N-1)番目順にi=A[i]i=A[i]になるまでswap(Ai,  AAi)swap(A_{i},\; A_{A_{i}})を続けると題意を満たせる。 また、AA1N1 \to Nまでの非重複数列なので、多くてもN1N-1回程度の操作で題意を満たせるので、O(N1)O(N)O(N-1)\fallingdotseq O(N)と表せられるので十分に高速である。


D

URLURL\:\to

解法


E

URLURL\:\to

解法