水题:https://codeforces.com/problemset/problem/11/A
A sequence a0, a1, …, at - 1 is called increasing if ai - 1 < ai for each i: 0 < i < t.
You are given a sequence b0, b1, …, bn - 1 and a positive integer d. In each move you may choose one element of the given sequence and add d to it. What is the least number of moves required to make the given sequence increasing?
Input
The first line of the input contains two integer numbers n and d (2 ≤ n ≤ 2000, 1 ≤ d ≤ 106). The second line contains space separated sequence b0, b1, …, bn - 1 (1 ≤ bi ≤ 106).
Output
Output the minimal number of moves needed to make the sequence increasing.
题目大意:
如果a[]后面的数比前面的小,就加d,加到比前面的数大为止。
#include<iostream>
using namespace std;
int main()
{
long long int i, d, n, t1, sum, a[100001];
cin >> n >> d;
sum = 0;
for (i = 0; i < n; i++)
cin >> a[i];
for (i = 0; i < n-1; i++) {
if (a[i] >= a[i + 1]) {
t1 = (a[i] - a[i+1]) / d;
t1++;
sum += t1;
a[i+1] += d * t1;
}
}
cout << sum << endl;
//system("pause");
return 0;
}
直接水过/