平滑值(pinghua)

平滑值

题目描述

一个数组的“平滑值”定义为:相邻两数差的绝对值的最大值。
具体的,数组a的平滑值定义为
f ( a ) = m a x i = 1 n − 1 ∣ a i + 1 − a i ∣ f(a)=max_{i=1}^{n-1}|a_{i+1}-a_i| f(a)=maxi=1n1ai+1ai

现在小红拿到了一个数组。她每次操作可以在两个元素之间添加一个整数(不能添加在第一项前面或者最后一项后面)。小红希望最终数组的平滑值恰好等于 k k k,你能帮小红求出最小的操作次数吗?

输入格式

第一行输入两个正整数 n , k n,k n,k,代表数组的大小、以及最终希望达到的平滑值。

第二行输入 n n n个正整数 a i a_i ai。代表小红拿到的数组。

输出格式

一个整数,代表小红最少的操作次数。

样例 #1

样例输入 #1

5 2
1 4 5 1 3

样例输出 #1

2

提示

小红首先在1和4之间插入一个3或2,然后在5和1之间插入一个3即可。

数据范围

2 ≤ n ≤ 1 0 5 2≤n≤10^5 2n105

1 ≤ k , a i ≤ 1 0 9 1≤k,a_i ≤10^9 1k,ai109

/*
分三种情况:
1.max(abs(a[i]-a[i-1]))==k,不用改变,输出 0
2.max(abs(a[i]-a[i-1]))<k,只在某一段做 1 次就行
3.max(abs(a[i]-a[i-1]))>k,枚举每一大于 k 的段,次数为
max/k(向上取整)-1,累加起来就是答案
*/
#include<bits/stdc++.h>
using namespace std;
int n, k;
int main() {
	cin >> n >> k;
	vector<int> a(n + 1);
	int mx = 0;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
		if (i > 1) mx = max(mx, abs(a[i] - a[i - 1]));
		/
		/前后数字的最大差值
	}
	if (mx < k)cout << 1;
	else if (mx == k) cout << 0;
	else {
		long long ans = 0;//注意要开 long long
		for (int i = 2; i <= n; i++) {
			int now = abs(a[i] - a[i - 1]);
			if (now <= k)continue; //小于等于 k 不处理
			ans += (now + k - 1) / k - 1; //向上取整先加
			k-1,再除以 k,得到段数,减 1 就是个数
		}
		cout << ans;
	}
	return 0;
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 05:36:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 05:36:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 05:36:01       87 阅读
  4. Python语言-面向对象

    2024-06-09 05:36:01       96 阅读

热门阅读

  1. Ubuntu bash按Table不联想

    2024-06-09 05:36:01       29 阅读
  2. 素数幂变换问题

    2024-06-09 05:36:01       25 阅读
  3. html前端怎么赚钱:探索多元盈利途径

    2024-06-09 05:36:01       26 阅读
  4. 1、项目介绍:为什么要做此项目。

    2024-06-09 05:36:01       28 阅读
  5. ssh远程管理和密钥和yum源

    2024-06-09 05:36:01       27 阅读
  6. 动态规划学习

    2024-06-09 05:36:01       31 阅读
  7. 单片机毕业设计论文都些什么,章节规划

    2024-06-09 05:36:01       33 阅读
  8. leetcode-01-[704]二分查找[27]移除元素

    2024-06-09 05:36:01       38 阅读
  9. Leetcode:有效的括号

    2024-06-09 05:36:01       32 阅读
  10. 深入解析Kafka消息丢失的原因与解决方案

    2024-06-09 05:36:01       30 阅读
  11. 大模型日报2024-06-08

    2024-06-09 05:36:01       35 阅读