好想变得和你一样强!!!

时间限制: 1000 ms 内存限制: 65536 kb
总通过人数: 102 总提交人数: 176

题目背景

所以,海的那边是什么?

题目描述

曾经,有一位强者名叫 $\text{Alice}$ ,$\text{Chtholly}$ 想变得和她一样强

但是 $\text{Chtholly}$ 现在还无法做到,她只能摆弄手中的 $n$ 个整数 $a_1, a_2, \cdots, a_n$

$\text{Chtholly}$ 可以进行若干次操作,每次操作可以从 $n$ 个整数中任意选择一个数 $a_i$ ,将它加 $1$ 或减 $1$

一个整数序列被称为“好序列”,当且仅当其单调递增,且相邻两数的差值为 $1$

如 $[2, 3, 4]$ 和 $[9, 10, 11,12]$ 是“好序列”,而 $[1, 1, 4, 5]$ 和 $[1, 3, 4]$ 不是“好序列”

$\text{Chtholly}$ 想知道,最少通过多少次操作,可以将序列 $a_1, a_2, \cdots, a_n$ 变为“好序列”

输入

输入包括两行

第一行包括一个整数 $n$

第二行包括 $n$ 个整数,$a_1, a_2, \cdots, a_n$

输出

输出包括一行

第一行包括一个整数,表示最少的操作次数

输入样例 1

4
7 1 4 9

输出样例 1

11

输入样例 2

7
1 9 1 9 8 1 0

输出样例 2

29

样例解释

对于样例 $1$ ,最优解之一是使序列变为 $[2, 3, 4 ,5]$

数据范围

  • 对于 $50\%$ 的数据,$1 \leq n \leq 10 ^ 3$

  • 对于 $100\%$ 的数据,$1 \leq n \leq 10^5, 0 \leq a_i \leq 10 ^ 9$

Hint

本题可能需要用到排序算法 ,以下代码可以实现对数组的高效排序(从小到大),平均时间复杂度为 $\text{O}(n\log_2 n)$,可供参考

(课堂上没有讲解排序之前可以先不懂原理,能够把以下代码合理地嵌入进自己的程序之中来实现排序即可)

#include <stdio.h>
#include <stdlib.h> //头文件需要添加 stdlib.h
int cmp(const void *p1, const void *p2) {
	if (*((int*)p1) <= *((int*)p2))
		return -1;
	return 1;
}
int a[10] = {1, 9, 4, 9, 2, 0, 2, 3}; //此处元素下标从 0 开始
int main() {
	int n = 8; // n 为数组中的元素个数
	qsort(a, n, sizeof(a[0]), cmp); // 排序
	for (int i = 0; i < n; i++)
		printf("%d ", a[i]);
	printf("\n");
	return 0;
}

本题可能需要用到 long long ,请留意

题目背景 - 续

屏幕在深夜微微发亮

思想在那虚树路径上彷徨

平面的向量交错生长

织成 忧伤的网

剪枝剪去我们的疯狂

SPFA告诉我前途在何方

01背包装下了忧伤

笑颜 洋溢脸庞

键盘微凉 鼠标微凉

指尖流淌 代码千行

凸包周长 直径多长

一进考场 全都忘光

你在OJ上提交了千百遍

却依然不能卡进那时限

双手敲尽代码也敲尽岁月

只有我一人 写的题解

凋零在OJ里面

tarjan陪伴强联通分量

生成树完成后思路才闪光

欧拉跑过的七桥古塘

让你 心驰神往

队列进出图上的方向

线段树区间修改求出总量

可持久留下的迹象

我们 俯身欣赏

数论算法 图论算法

高斯费马 树上开花

线性规划 动态规划

时间爆炸 如何优化

我在OI中辗转了千百天

却不让我看AK最后一眼

我用空间换回超限的时间

随重新编译 测完样例

才发现漏洞满篇

原来CE 是因选错语言

其实爆0 只因忘写文件

如果标算太难请坚定信念

不如回头再看一眼题面

以那暴力模拟向正解吊唁

蒟蒻的蜕变 神犇出现

终将与Au擦肩

屏幕在深夜微微发亮

我心在考场

—— Menci/24OI 《膜你抄》

相关推荐