P14232 [COI 2011] 排序 / SORT
题目背景
译自 [COI 2011 T1](https://hsin.hr/hio2011/zadaci/)。
题目描述
为了将工厂中的工作自动化,Mirko 希望利用一台老旧的分拣机器人来整理箱子。工厂中有 $N$ 个箱子,编号分别为 $1$ 到 $N$ 的不同整数,需要按照编号升序排列。
这台分拣机器人只能执行一种特定操作:对于给定的一组不同位置,机器人会循环移动这些位置上的箱子。例如,如果初始箱子顺序为 $[4, 1, 5, 2, 3]$,而 Mirko 向机器人发出指令 $[2, 1, 3]$,则机器人会将位置 $2$ 的箱子移到位置 $1$,位置 $1$ 的箱子移到位置 $3$,位置 $3$ 的箱子移到位置 $2$。操作后的箱子顺序将变为 $[1, 5, 4, 2, 3]$。
请编写一个程序,设计必要的指令,使得机器人能够用最少的操作次数将给定的箱子序列排序。在此过程中,单次操作的长度(即需要循环移动的位置数量)并不重要。
输入格式
第一行输入一个整数 $N$ $(2 \le N \le 1000)$,表示仓库中的箱子数量。
第二行包含 $N$ 个不同的正整数,按顺序表示箱子的初始顺序标签。
输出格式
第一行输出一个整数 $X$,表示所需的最少操作次数。
接下来的 $X$ 行每行描述一次操作:首先输出一个正整数表示该操作涉及的位置总数,接着是一个 `:` 字符、一个空格,然后按顺序列出需要循环移动的位置,各位置之间用一个空格分隔。
**注意**:解不一定唯一。如果存在多个可能的解,输出其中任意一个即可。
说明/提示
如果程序在某个测试用例中的操作次数不超过 $1000$ 但也并非最少的,只要能够正确排序就可以获得该测试点 $50\%$ 的分数。