AcWing 1224 交換瓶子

2022-05-29 18:39:11 字數 551 閱讀 5057

tags: 置換群 圖論目錄1

2345

3125

4每乙個點都有屬於他的環。

交換操作:某點的出度,會指向和他交換的點的下標

所以最少要交換的次數,就是每次都讓環內的點交換

for (int j = i; !st[j]; j = b[j])

b[b[j]]某一點下標對應的值,當成另外乙個的下標

b[j]某一點下標對應的值

#include #include #include #include using namespace std;

const int maxn = 10000 + 10;

int n, cnt;

int b[maxn];

bool st[maxn];

int main()

}cout << n - cnt << endl;

return 0;

}

AcWing1224 交換瓶子

題 有 n 個瓶子,編號 1 n,放在架子上。比如有 5 個瓶子 2 1 3 5 4要求每次拿起 2 個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5對於這麼簡單的情況,顯然,至少需要交換 2 次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。本題思路比較精巧,需要用...

1224 交換瓶子

有 n 個瓶子,編號 1 n 放在架子上。比如有 5 個瓶子 2 1 3 5 4要求每次拿起 2 個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5對於這麼簡單的情況,顯然,至少需要交換 2 次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。第一行包含乙個整數 n 表示...

藍橋 交換瓶子

交換瓶子 有n個瓶子,編號 1 n,放在架子上。比如有5個瓶子 2 1 3 5 4要求每次拿起2個瓶子,交換它們的位置。經過若干次後,使得瓶子的序號為 1 2 3 4 5 對於這麼簡單的情況,顯然,至少需要交換2次就可以復位。如果瓶子更多呢?你可以通過程式設計來解決。輸入格式為兩行 第一行 乙個正整...