转化问题 根据“好的”数组的定义,存在一个非负整数 c,使得对于所有 i∈[1,n],都满足 ∣ai′−i∣=c,其中 a′ 是我们目标中的“好的”数组。这个等式可以拆解为两种情况:ai′−i=c 或 ai′−i=−c。
引入辅助数组 为了简化问题,我们定义一个辅助数组 b,令 bi=ai−i。那么,我们的目标就是将数组 a 转换成 a′,等价于将数组 b 转换成数组 b′(其中 bi′=ai′−i),并且数组 b′ 中的每个元素要么是 c,要么是 −c。
计算代价 将 ai 修改为 ai′ 的代价是 |ai - ai′|。我们可以将其与数组 b 联系起来:
小红认为一个长度为 n 的数组是好的,当且仅当对于任意的 i 均满足:
∣ai−i∣ 均相等,其中数组下标 i 从 1 开始,小红每次可以对一个数加 1 或者减 1 ,求把给定的数组变成好数组的最少操作次数。
第一行一个整数 n(1≤n≤1000) ,表示数组长度。
第二行 n 个整数,第 i 个为 ai(1≤ai≤n) 。
一个整数,表示把给定的数组变成好数组的最少量作次数。
输入
3
3 2 1
输出
2
输入
3
1 2 3
输出
0