观察易知,我们存在相邻元素差的绝对值大于k,就需要在中间插入元素,插入元素的个数ans = abs(差值)/K,当差值整除k时间,ans需要减一。 我们还需要考虑几个特殊情况: (1)最大差值小于k,输出1即可,我们使用flag标记。 (2)最大差值等于k,输出0。
注意:一定要开long long(我绝对没有忘开)
typedef long long ll;
using namespace std;
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
//不开long long见祖宗
void solve(){
ll n,k;
cin>>n>>k;
vector<ll> a(n+1,0);
for (int i = 1; i <= n; ++i) {
cin>>a[i];
}
ll ans = 0;
bool flag = false;
ll maxx = 0;
for (int i = 2; i <= n; ++i) {
ll tmp = abs(a[i] - a[i-1]);
maxx = max(maxx,tmp);
if(tmp >= k){
flag = true;
ans += tmp/k;
if(tmp%k == 0) ans--;
}
}
if(maxx == k){
cout<<"0"<<endl;
return;
}
if(!flag){
cout<<1<<endl;
return;
}
cout<<ans<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
int t = 1;
//cin>>t;
while(t--){
solve();
}
return 0 ;
}