题目描述
给你一个环形的 0∼n−1 的排列 a0,a1,…,an−1。
一次操作你可以选择一个整数 i∈[0,n−1],把 ai 赋值成 a(i−1)modn+a(i+1)modn−ai。
一个位置 i∈[0,n−1] 是好的当且仅当 a(i−1)modn<ai 且 a(i+1)modn<ai。
环形序列 a 是好的当且仅当存在恰好一个位置 i∈[0,n−1] 使得位置 i 是好的。
求至少要进行多少次操作能让 a 变成好的。可以证明一定有解。
输入格式
本题有多组测试数据。
第一行输入一个正整数 T,表示测试数据组数。
对于每组测试数据:
第一行包含一个正整数 n。
第二行包含 n 个非负整数 a0,a1,…,an−1。
输出格式
对于每组数据,输出一行一个整数,表示最少要进行的操作次数。
3
2
1 0
5
2 3 0 4 1
10
0 5 9 7 3 1 6 4 8 2
0
1
5
提示
【样例解释】
在第一组数据中,初始序列恰好存在一个好的位置 i=0,所以答案为 0。
在第二组数据中,可以选择 i=2 操作,操作后序列变为 a=[2,3,7,4,1]。此时序列恰好存在一个好的位置 i=2,所以答案为 1。
【数据范围】
本题采用捆绑测试且开启子任务依赖。
子任务编号 |
分值 |
n≤ |
∑n≤ |
特殊性质 |
子任务依赖 |
1 |
19 |
6 |
104 |
无 |
无 |
2 |
14 |
12 |
1 |
3 |
27 |
2⋅103 |
1,2 |
4 |
2 |
2⋅105 |
ai=i |
无 |
5 |
38 |
无 |
1,2,3,4 |
对于所有数据,满足 1≤T≤104,2≤n,∑n≤2⋅105,0≤ai≤n−1,a 是一个 0∼n−1 的排列。