CF716A Crazy Computer 题解
Content
有一个电脑,如果过了 \(c\) 秒之后还没有任何打字符的操作,就把屏幕上面所有的字符清空。现在,给定 \(n\) 次打字符的时间 \(t_1,t_2,...,t_n\),求最后屏幕剩下的字符数。
数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant c\leqslant 10^9,1\leqslant t_1\leqslant t_2\leqslant t_3\leqslant ...\leqslant t_n\leqslant 10^9\)。
Solution
由于输入数据的特殊性,即保证输入的时间是升序的,所以我们直接判断两次操作之间的时间是否大于 \(c\),大于 \(c\) 就清空,否则就再加上一个字符。注意你可以 \(i=2\to n\),判断 \(a_i-a_{i-1}\) 是否大于 \(m\),也可以从 \(i=1\to n-1\),判断 \(a_{i+1}-a_i\) 是否大于 \(m\),注意循环范围和判断要一一对应。
Code
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, a[100007], ans = 1;
int main() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; ++i) scanf("%d", &a[i]);
for(int i = 2; i <= n; ++i) {
if(a[i] - a[i - 1] > m) ans = 1;
else ans++;
}
printf("%d", ans);
}