码迷,mamicode.com
首页 > 其他好文 > 详细

【题解】驾驶山猫

时间:2019-05-03 16:35:00      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:iostream   str   最大   closed   led   解释   include   run   pos   

题目描述

  lxl作为一名老司机,他十分喜欢驾驶他的山猫护幼。由于zyl嫉妒lxl开山猫的技术高超,zyl yy了一段路来考验lxl的驾驶技术。他要求lxl要从0的位置驾驶到m的位置,且这段路中有 n 个位置上有石头。

  lxl的车自然不能撞到石头上。为了防止这种情况,他可以将车在地上助跑至少 s 个单位后在空中飞至多 d 个单位。现在他想知道,他应该如何经过这一段路呢?

输入格式

  第一行输入四个整数 n,m,s,d ,分别表示障碍数,路程长度,助跑最小长度,飞行最大长度。

  第二行输入 n 个整数,表示 n 个石头的位置 w1,w2,...,wn 。保证 {wi} 为递增序列。

 

输出格式

  输出若干行,表示你开车的过程,每个过程有两种:

  RUN X表示在地上开X个单位长度,不能有两个连续的RUN命令。

  JUMP X表示在空中飞X个单位长度,这个命令的前一个操作要求要助跑距离不少于 s ,飞的长度不超过 d 。

  如果有多种过程能到达终点,允许输出任意一种。另外,你需要保证 1≤X≤10^9 且最后车在的位置恰好为 m ,允许结束时的最后一个命令为JUMP。

  如果不能到达终点,输出Impossible。


输入样例

3 10 1 3
3 4 7

 

输出样例

RUN 2
JUMP 3
RUN 1
JUMP 2
RUN 2

样例解释

技术图片

 

数据范围

  对于40%的数据, n≤10

  对于70%的数据, n≤4000

  对于100%的数据, 1≤n≤200000 , 2≤m≤10^9 , 1≤s,d≤10^9 , 1≤wi≤m-1 , wi<wi+1

  X 为 1 到 10^9 内的整数

 

题解

  显然根据贪心策略·,能走就不飞,我们记录路径即可。

技术图片
#include <iostream> 
#include <cstdio>

#define MAX_N 200000

using namespace std;

int n, m, s, d;
int a[MAX_N + 5]; 
int st[MAX_N + 5], cnt;

int main()
{
    scanf("%d%d%d%d", &n, &m, &s, &d);
    for(register int i = 1; i <= n; ++i)
    {
        scanf("%d", a + i);
    }    
    if(d < 2 || s >= a[1]) 
    {
        printf("Impossible");
        return 0;
    }
    st[++cnt] = 1;
    for(register int i = 2; i <= n; ++i)
    {
        if(a[i - 1] + s + 1 < a[i]) 
        {
            st[++cnt] = i;
        }
        else if(a[i] - a[st[cnt]] + 2 > d) 
        {
            printf("Impossible");
            return 0;
        }
    }
    printf("RUN %d\n", a[1] - 1);
    for(register int i = 2; i <= cnt; ++i)
    {
        printf("JUMP %d\n", a[st[i] - 1] - a[st[i - 1]] + 2);
        printf("RUN %d\n", a[st[i]] - a[st[i] - 1] - 2);
    }
    printf("JUMP %d\n", a[n] - a[st[cnt]] + 2);
    if(a[n] + 1 < m) printf("RUN %d", m - a[n] - 1);
    return 0;
}
参考程序

 

【题解】驾驶山猫

标签:iostream   str   最大   closed   led   解释   include   run   pos   

原文地址:https://www.cnblogs.com/kcn999/p/10805265.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!