• VK Cup 2016


    题意 :


    在 x 坐标轴上,从 0 到 m 点,中途有 n 个障碍,遇到障碍可以 跳,
    但是每次跳之前需要一段 距离为 s 的“助跑 ”,而且每次跳跃距离不能超过 d ,不能落在障碍点上;
    给出 n,m,s,d,接下来 n 个数 ,表示障碍的坐标。
    输入保证起点和终点不会有障碍,不会有两个障碍在同一位置。
    输出到达终点的过程。如果不能到达终点输出“IMPOSSIBLE” 。

    解题:

    模拟啊模拟(好烦好烦= =)

    首先 他一定是跑到距离障碍最近的位置才跳的,这样可以跳的更远些。
    然后两个障碍之间相距 要大于等于 s+2 ,才可以再次跳,否则不能到达终点了。
    所以只要在 d 范围里找到了这样 一段距离(只要起始位置包含在 d 里就可以辣) 就继续往前跳。
    为了方便把数组的 n+1 位 设置成 a[n+1] = m+1;
    这样判断的时候如果 到了最后的位置就不判断直接跳过去。

    感觉智商被掏空 乱七八糟不知道说了啥 = =直接代码好懂

    吐槽 :
    WOC! 写了一天...
    好不容易算法对了,算错范围 WA 的不知所措 = = 真的是找了好久
    好菜啊啊啊 

    #include<cstdio>
    #include<cstring> 
    #include<algorithm>
    #include<iostream>
    #include<string>
    #define ll __int64
    using namespace std;
    const int maxn = 200010;
    ll a[maxn],ans[maxn];
    int main()
    {
        int n,m,s,d;
        scanf("%d%d%d%d",&n,&m,&s,&d);
        for(int i=1;i<=n;i++)
            scanf("%I64d",&a[i]);        
        sort(a+1,a+n+1); 
        a[n+1] = m+1;    
        ll pos = a[1] - 1, las = 0;
        int cnt = 0, f = 0;
        ans[cnt++] = pos - las;    
        for(int i=1;i<=n;i++) {
            if(pos - las >= s) { //如果满足跳的条件 
                int j, fg = 0;
                for(j = i+1; j<=n+1 ; j++) { 
                    if( a[i]-pos >= d) break;  // d范围内寻找  
                    if( ( (a[j]-1) - (a[i]+1) >= s) || (j==n+1) ){
                        fg = 1; break;
                    }                                 
                    i ++ ;
                }
                if(!fg) { 
                     f = 1; break;
                }  
                las = a[i] + 1;
                ans[cnt++] = las - pos; 
                pos = a[j] - 1;    
                ans[cnt++] = pos - las;        
            }
            else {
                f = 1; break;
            }        
        }
        if(f) printf("IMPOSSIBLE
    ");
        else {
            for(int i=0;i<cnt;i++) {
                if(ans[i]) 
                    printf((i%2)?"JUMP %I64d
    ":"RUN %I64d
    ",ans[i]);            
            }
        }
        return 0;
    }
  • 相关阅读:
    配置FTP服务
    Tomcat
    LNMP环境配置(下)
    LNMP环境配置(上)
    Ansible---
    Ansible
    正则三剑客-------grep
    Docker仓库的使用与维护
    Docker 引擎的安装 -->>存储库安装
    shell脚本实例
  • 原文地址:https://www.cnblogs.com/ember/p/5727011.html
Copyright © 2020-2023  润新知