#P16900. [GKS 2022 #H] Level Design
[GKS 2022 #H] Level Design
题目描述
在排列 中,一个置换循环是一个整数序列 ,满足以下条件:
- 对所有 ,,且互不相同。
- 对每个 有 ,且 。
长度为 的置换循环称为 -循环。
例如,排列 有两个循环:-循环 和 -循环 。 是一个循环,因为 ,,且 。
:::align{center}
:::
Grace 喜欢置换循环,于是 Charles 决定设计一个 级游戏来挑战她。
游戏开始时,玩家会得到一个长度为 的排列 ,其中包含整数 到 。游戏级数编号为 到 。在每个级别,玩家从给定的排列开始,并可以通过交换其中任意两个元素来修改它(可以进行多次交换)。要通关第 级,玩家需要找出在排列中创建一个 -循环所需的最小交换次数。玩家只有在通关第 级后才能进入第 级。
Grace 觉得这个游戏有点挑战性,但她不惜一切代价想要获胜。她需要你的帮助!形式化地说,对于每个级别 ,你需要求出在排列中创建一个 -循环所需的最小交换次数。
输入格式
输入的第一行给出测试用例的数量 。接下来有 个测试用例。
每个测试用例的第一行包含一个整数 :排列的长度。
下一行包含 个整数 ,其中第 个整数表示排列 中的第 个元素。
输出格式
对于每个测试用例,输出一行,格式为 Case #x: S1 S2 ... SN,其中 是测试用例编号(从 开始), 是游戏中第 级的答案,即在排列中创建一个 -循环所需的最小交换次数。
2
3
1 2 3
4
4 2 1 3
Case #1: 0 1 2
Case #2: 0 1 0 1
提示
在样例 #1 中,给定排列中有三个 -循环。因此,第一级可以用零次交换通关。要通关第二级,我们可以交换前两个元素得到排列 ,其中包含 -循环 。要通关第三级,我们可以交换前两个元素,然后交换第二个和第三个元素,得到排列 ,其中包含 -循环 。
在样例 #2 中,如前所述,排列包含 -循环 。因此,通关第一级需要零次交换。要通关第二级,我们可以交换最后两个元素得到排列 ,其中包含 -循环 。由于排列中也有 -循环 ,因此第三级也可以用零次交换通关。要通关第四级,我们可以交换第二个和第四个元素得到排列 ,其中包含 -循环 。
限制条件
。
对于所有 ,。
所有 互不相同。
测试集 1
。
测试集 2
。
翻译由 DeepSeek V4 Pro 完成