Skip to content

Swap Linked Technique

介紹

交換是競程中常見的考題,有一些交換題目需要一些特殊技巧才可解題。

本質

交換題目其實在考:

相對順序的改變成本 👉 也就是交換一次時,對某條件的改變是多少。

由這個概念就可以延伸出許多變種。

逆序數對

逆序數對是最基本的交換,逆序數對的定義如下:

\[\text{inversion set} := S = \{(i,j) \mid i < j \wedge a_i > a_j\}\\ \text{inversion number} := n(S)\]

TODO

交換轉抽取模型

有些題目需要將數列 \(A\) 交換 k 次化為:

\(A\) 中的所有元素依序排成新的數列 \(B\),若所需的交換次數 \(\le k\) 就是好的數列。

於是每個新增的數的交換成本就會是:此數在原數列與開頭的距離 - 1 + 中間已經被換走的數個數

也可以記成:Position - Removed_Count

[問題]\ 這樣寫的話,若要往後面取數字,不就不會被考慮了?

其實也會被算到!考慮一數列 1, 2, 3, 3,現在第一位已經放好 2,想要在第二位放 3: 則會需要交換 3 - 1 - 1 次,也就是 與開頭距離 (3) - 1 - 已經被換過的 2 (1) = 1 次,與預期答案相同!

題目

題目 詳解
ABC227E - Swap TODO