U76006 环上游戏
题目描述
有 $n$ 个位置首尾相接成一个环,按顺时针方向编号为 $1,2,\ldots,n$。每个位置初始恰好放有一个数,所有数构成 $1\sim n$ 的一个排列。
每经过一秒,每个数都可以独立地选择以下一种动作:
- 留在原位置;
- 顺时针移动一个位置;
- 逆时针移动一个位置。
任意多个数可以同时移动。移动过程中允许出现空位置,也允许多个数暂时位于同一个位置。
你希望在若干秒后,使每个位置重新恰好有一个数,并满足以下两种状态之一:
1. 沿顺时针方向读取得到 $1,2,\ldots,n$ 的某个循环移位;
2. 沿顺时针方向读取得到 $n,n-1,\ldots,1$ 的某个循环移位。
求达到目标状态所需的最少秒数。
“循环移位”表示可以任选目标序列的起点。例如 $n=5$ 时,`3 4 5 1 2` 是第一类目标状态。
输入格式
输入包含两行。
第一行为一个正整数 $n$。
第二行为 $n$ 个空格隔开的正整数,为一个 $1...n$ 的排列,表示最开始时按顺时针顺序的环上的数。
输出格式
输出一个整数表示答案。
说明/提示
对于所有数据,$1\le n\le10^6$,且 $a$ 是 $1\sim n$ 的排列。时间限制为 $2$ 秒,内存限制为 $256$ MiB。
| 子任务 | 测试点数 | 分值 | 限制 |
| -----: | -------: | ---: | ------------------------------ |
| 1 | 3 | 3 | $n\le8$ |
| 2 | 5 | 7 | $n\le2000$ |
| 3 | 7 | 12 | 初始排列已经是两类目标状态之一 |
| 4 | 9 | 18 | $n\le2\times10^5$ |
| 5 | 11 | 25 | $n\le5\times10^5$ |
| 6 | 13 | 35 | 无额外限制 |