此题主要也是通过模拟贪心的方式来得出是否满足条件,一共需要跳k次,每次跳d距离,所以跳跃则固定为kd,在L中其他的距离需要自己走,距离为L-kd,也就是说我们可以通过贪心的方式来求出至多可以走多少的距离,如果这个距离大于L-k*d,则代表我们必有方案可以走完,所以只需要求出贪心可走的最大距离,方式则为,从左至右遇到障碍则跳
#include <bits/stdc++.h>
using namespace std;
#define ll long long
在一个长度为 L 的传送带上,工程师需要从起点 0 移动到终点 L。传送带上存在 n 个静电危险区,其中第 i 个危险区位于坐标 pi+0.5(pi 为整数)。工程师有两种移动方式:
工程师在整个过程中必须恰好使用 k 次跳跃,且跳跃的起跳点必须为整数坐标。所有跳跃的总距离之和不能超过 L(即 k×d≤L)。步进和跳跃可任意组合,最终位置必须能够到达或超过终点 L。请判断是否存在一种合规的移动方案。
输入数据满足以下约束:测试数据组数 T 满足 1≤T≤105;每组中危险区个数 n 满足 1≤n≤105;整数 L,k,d 满足 1≤L,k,d≤109;危险区位置参数 pi 满足 0≤pi≤L 且严格递增;所有测试数据的 n 之和不超过 2×105。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.