• codeforces342B


    Xenia and Spies

     CodeForces - 342B 

    Xenia the vigorous detective faced n (n ≥ 2) foreign spies lined up in a row. We'll consider the spies numbered from 1 to n from left to right.

    Spy s has an important note. He has to pass the note to spy f. Xenia interrogates the spies in several steps. During one step the spy keeping the important note can pass the note to one of his neighbours in the row. In other words, if this spy's number is x, he can pass the note to another spy, either x - 1 or x + 1 (if x = 1 or x = n, then the spy has only one neighbour). Also during a step the spy can keep a note and not pass it to anyone.

    But nothing is that easy. During m steps Xenia watches some spies attentively. Specifically, during step ti (steps are numbered from 1) Xenia watches spies numbers li, li + 1, li + 2, ..., ri (1 ≤ li ≤ ri ≤ n). Of course, if during some step a spy is watched, he can't do anything: neither give the note nor take it from some other spy. Otherwise, Xenia reveals the spies' cunning plot. Nevertheless, if the spy at the current step keeps the note, Xenia sees nothing suspicious even if she watches him.

    You've got s and f. Also, you have the steps during which Xenia watches spies and which spies she is going to watch during each step. Find the best way the spies should act in order to pass the note from spy s to spy f as quickly as possible (in the minimum number of steps).

    Input

    The first line contains four integers nms and f (1 ≤ n, m ≤ 105; 1 ≤ s, f ≤ ns ≠ fn ≥ 2). Each of the following m lines contains three integers ti, li, ri (1 ≤ ti ≤ 109, 1 ≤ li ≤ ri ≤ n). It is guaranteed that t1 < t2 < t3 < ... < tm.

    Output

    Print k characters in a line: the i-th character in the line must represent the spies' actions on step i. If on step i the spy with the note must pass the note to the spy with a lesser number, the i-th character should equal "L". If on step i the spy with the note must pass it to the spy with a larger number, the i-th character must equal "R". If the spy must keep the note at the i-th step, the i-th character must equal "X".

    As a result of applying the printed sequence of actions spy s must pass the note to spy f. The number of printed characters k must be as small as possible. Xenia must not catch the spies passing the note.

    If there are miltiple optimal solutions, you can print any of them. It is guaranteed that the answer exists.

    Examples

    Input
    3 5 1 3
    1 1 2
    2 2 3
    3 3 3
    4 1 1
    10 1 3
    Output
    XXRR

    sol:题意很鬼畜,看了半天都没懂

    题意:给定 n 个间谍,m个区间,一个 s,一个f,然后从 s开始传纸条,然后传到 f,
    然后在每个 t 时间在区间内的不能传,问你最少的时间传过去。

    然后直接暴力模拟即可

    
    
    /*
    题意:给定 n 个间谍,m个区间,一个 s,一个f,然后从 s开始传纸条,然后传到 f,
    然后在每个 t 时间在区间内的不能传,问你最少的时间传过去。
    */
    #include <bits/stdc++.h>
    using namespace std;
    typedef int ll;
    inline ll read()
    {
        ll s=0;
        bool f=0;
        char ch=' ';
        while(!isdigit(ch))
        {
            f|=(ch=='-'); ch=getchar();
        }
        while(isdigit(ch))
        {
            s=(s<<3)+(s<<1)+(ch^48); ch=getchar();
        }
        return (f)?(-s):(s);
    }
    #define R(x) x=read()
    inline void write(ll x)
    {
        if(x<0)
        {
            putchar('-'); x=-x;
        }
        if(x<10)
        {
            putchar(x+'0');    return;
        }
        write(x/10);
        putchar((x%10)+'0');
        return;
    }
    #define W(x) write(x),putchar(' ')
    #define Wl(x) write(x),putchar('
    ')
    const int N=100005;
    int n,m,Sta,End;
    struct Not
    {
        int Time,l,r;
        inline bool operator<(const Not &tmp)const
        {
            return Time<tmp.Time;
        }
    }a[N];
    int main()
    {
        int i,opt,Time=1,Now=1;
        R(n); R(m); R(Sta); R(End);
        opt=(Sta<End)?1:-1;
        for(i=1;i<=m;i++)
        {
            R(a[i].Time); R(a[i].l); R(a[i].r);
        }
        sort(a+1,a+m+1);
        while(Sta!=End)
        {
            if(a[Now].Time==Time)
            {
                int Weiz=Sta+opt;
                bool Flag=0;
                while(a[Now].Time==Time&&Now<=m)
                {
                    if((Weiz>=a[Now].l&&Weiz<=a[Now].r)||(Sta>=a[Now].l&&Sta<=a[Now].r)) Flag=1;
                    Now++;
                }
                if(Flag) putchar('X');
                else
                {
                    (opt==1)?putchar('R'):putchar('L'); Sta+=opt;
                }
            }
            else
            {
                (opt==1)?putchar('R'):putchar('L'); Sta+=opt;
            }
            Time++;
        }
        return 0;
    }
    /*
    Input
    3 5 1 3
    1 1 2
    2 2 3
    3 3 3
    4 1 1
    10 1 3
    Output
    XXRR
    
    Input
    5 11 1 5
    1 1 5
    2 2 2
    3 1 1
    4 3 3
    5 3 3
    6 1 1
    7 4 4
    8 4 5
    10 1 3
    11 5 5
    13 1 5
    Output
    XXXRXRXXRR
    */
    View Code
    
    
    
     
  • 相关阅读:
    exceljs的使用
    解决ios下的微信打开的页面背景音乐无法自动播放
    js 给定日期转为星期几
    获取地址栏参数
    解决浏览器缓存 或 刷新URL地址
    计算两个日期之间的天数
    获取当前日期的前后N天日期的方法
    将一下 prototype 是什么东西,原型链的理解,什么时候用 prototype
    apply和 call 什么含义,什么区别?什么时候用
    高效Web开发的10个jQuery代码片段
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/10754642.html
Copyright © 2020-2023  润新知