网站页面
当前课程
成员
General
主题 1
主题 2
主题 4
主题 5
主题 6
主题 7
主题 8
主题 9
主题 10
主题 11
主题 12
主题 13
主题 14
主题 15
主题 16
主题 17
主题 18
主题 19
主题 20
转动转盘
成绩 | 0 | 开启时间 | 2013年01月1日 星期二 17:30 |
折扣 | 0.8 | 折扣时间 | 2013年01月1日 星期二 17:30 |
允许迟交 | 是 | 关闭时间 | 2013年01月1日 星期二 17:30 |
输入文件 | thewheel.in | 输出文件 | thewheel.out |
题目描述:
在Admin小时候呆着的幼儿园里有一个巨大的转盘。有N个小朋友按照一定顺序坐在转盘边缘的N个座位上,所有座位之间的距离都相等。有些小朋友之间可能会闹矛盾,为了使得幼儿园更加的和谐,你需要重新安排小朋友的排列。
初始情况下正北方向座位上坐着的小朋友编号为1,后依次按照顺时针方向将小朋友编号为2到N。如下图:
我们可以用一个序列描述一个转盘上小朋友的情况,从正北方向开始,依次按照顺时针方向将小朋友的编号列出来,如上图对应的序列就是{1,2,3,4,5}。
现在你只可以用过下面三种方式操作:
1.将整个转盘顺时针旋转1/N圈。这样操作会使得序列变成{5,1,2,3,4}。
2.将整个转盘逆时针旋转1/N圈。这样操作会使得序列变成{2,3,4,5,1}。
3.交换正北方向的座位和正北顺时针方向第一个座位上的小朋友。这样操作会使得序列变成{2,1,3,4,5}。
现在给出你目标序列,输出你最少需要操作多少步。如果这个数大于30,则输出-1。
输入格式:
第1行为一个数n,表示有n个小朋友。
第2行有n个数,表示目标序列
输出格式:
共一行,表示最少操作多少步。
样例输入:
4
1 3 2 4
样例输出:
3
样例解释:
共经过三次操作
1.将序列{1,2,3,4}变为{2,3,4,1}
2.将序列{2,3,4,1}变为{3,2,4,1}
3.将序列{3,2,4,1}变为{1,3,2,4}
数据规模和约定:
对于30%的数据 n<=5
对于50%的数据 n<=8
对于100%的数据 2<=n<=20