站外题求助
  • 板块题目总版
  • 楼主708151_qwq
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/7/26 11:47
  • 上次更新2024/7/21 15:37:09
查看原帖
站外题求助
708151
708151_qwq楼主2023/7/26 11:47

题目说明

津津是个勇敢的孩子,总是做一些挑战自己的事情。一天津津来到一条宽为 LL 米的小河边,河道的一边到另一边需要途径 NN 块较大的石墩,每块石墩到这一边岸边之间距离 xix_i 米(石墩不占距离,只考虑石墩的中间点到这一边岸边之间距离)。

津津想踩着这些石墩从小河的这一边跳到另一边(不落入水中),一次可以跳过几块石墩。已知津津每次最多跳 MM 米的 距离,那么津津最少跳几次就能从这一边跳到另一边?

输入说明

第一行包含三个整数 LL , NN , MM,分别表示小河的宽度、石墩数和津津跳的最远距离。

接下来 NN 行,每行一个整数,第 ii 行的整数 (0<di<L)(0<d_i<L),表示第 ii 块石墩与这一边岸边的距离,保证石墩之间的距离和石墩到这一边岸边的距离小等于 MM。这些石墩按与起点距离从小到大的顺序给出,且不会有两个石墩出现在同一个位置。

输出说明

一个整数,即最少的跳跃次数。

题目样例

样例输入 11

10 4 2
2
4
6
8

样例输出 11

5

数据说明 对于 30% 的数据,1≤NN≤10。

对于 50% 的数据,1≤NN≤100。

对于 100% 的数据,1≤NN≤500, 1≤M,LM,L≤1,000,000。

#include <bits/stdc++.h>
using namespace std;
int main() {
	int l, n, m, cnt=0;
	cin >> l >> n >> m;
	int a[n+2];
	for(int i=1; i<=n; i++)
		cin >> a[i];
	a[0] = 0;
	if(l<=m) {
		cout << 1;
		return 0;
	}
	for(int i=0; i<n; i=i) {
		int t = i;
		for(int j=i+1; j<=n; j++) {
			if(a[j]-a[i]<=m)
				t = j;
			else break;
		}
		i = t;
		cnt++;
	}
	cout << cnt+1;
	return 0;
}

65分,求调

2023/7/26 11:47
加载中...