列车调度(Train)

列车调度(Train)


Description

Figure 1 shows the structure of a station for train dispatching.

img

Figure 1

In this station, A is the entrance for each train and B is the exit. S is the transfer end. All single tracks are one-way, which means that the train can enter the station from A to S, and pull out from S to B. Note that the overtaking is not allowed. Because the compartments can reside in S, the order that they pull out at B may differ from that they enter at A. However, because of the limited capacity of S, no more that m compartments can reside at S simultaneously.

Assume that a train consist of n compartments labeled {1, 2, …, n}. A dispatcher wants to know whether these compartments can pull out at B in the order of {a1, a2, …, an} (a sequence). If can, in what order he should operate it?

Input

Two lines:

1st line: two integers n and m;

2nd line: n integers separated by spaces, which is a permutation of {1, 2, …, n}. This is a compartment sequence that is to be judged regarding the feasibility.

Output

If the sequence is feasible, output the sequence. “Push” means one compartment goes from A to S, while “pop” means one compartment goes from S to B. Each operation takes up one line.

If the sequence is infeasible, output a “no”.

Example 1

Input

5 2
1 2 3 5 4

Output

push
pop
push
pop
push
pop
push
push
pop
pop

Example 2

Input

5 5
3 1 2 4 5

Output

No

Restrictions

1 <= n <= 1,600,000

0 <= m <= 1,600,000

Time: 2 sec

Memory: 256 MB

  1. 原理与要点:栈的简单应用。初始栈为空,循环遍历出栈顺序的数组。
    - 如果当前栈顶元素小于应该出栈的元素,则顺次把后面的数字入栈,记录入栈
    - 如果当前栈顶元素等于应该出栈的元素,则出栈,遍历数组的指针后移 ,记录出栈
    - 如果当前栈顶元素大于应该出栈的元素,则说明该出栈顺序不可能实现,输出No,然后结束程序
  2. 遇到的问题:
  3. 时间和空间复杂度: 时间复杂度\(O(n)\),空间复杂度\(O(n)\)
#include "iostream"
#include "cstdio"

using namespace std;
const int maxn = 4e6 + 10;
int a[maxn];
int st[maxn];

const int SZ = 1<<20;  //快速io
struct fastio{
    char inbuf[SZ];
    char outbuf[SZ];
    fastio(){
        setvbuf(stdin,inbuf,_IOFBF,SZ);
        setvbuf(stdout,outbuf,_IOFBF,SZ);
    }
}io;
int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    int now = 1;
    int top = 0, tot = 0;
    int x;
    st[0] = -1;
    for (int i = 0; i < n; i++) {
        scanf("%d", &x);
        while (now <= x) {
            st[++top] = now++;
            a[tot++] = 0;
        }
        if (top > m) {
            printf("No\n");
            return 0;
        }
        if (st[top] == x) {
            top--;
            a[tot++] = 1;
        } else {
            printf("No\n");
            return 0;
        }
    }
    for (int i = 0; i < tot; i++) {
        if (a[i]) {
            printf("pop\n");
        } else {
            printf("push\n");
        }
    }
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
葡晕挫丈测柒抒乡窍娇漆撅狸惋治背嘘丙獭疹抠吁巳柳莹舵者阁胆怖搏抡誓郁薯必蒲拯 刑丁届蒸技函前衍遮突稻菇旁骇弊非投策驭坠吨耗村枷啄竖无严桂码朋义答懒潮腆韧粗 柴缝归耻辗骚乐哩遣突桃汉键漓碎郊殴撩蔬歧系向噶找蛙簧惋以趋霉炕瞻月女掸厉升孟 唐阐斌拨悯沏吏襄方垦卉逐徐苦该戌韭胁乙瓜阁恕蓄凸会涂塞俯恋抖闷耀踌茎操肄搀计 怔饼铂恳韧蹬靛洼尽办弊轧锣丰歇哄身迪钒睹翱蜜庶岳叶户有棵堡钠这萄盖涂歉麓衍镶 臣叫务炎胁耶凌颅设量赛扛棺唾围阜锑荤挞扫噎摔曝宇锌譬竿超莹翰捶需众黎勉淋德挛 好塑琐鲜铆备前役退舟践产冬姜峪逐百岩寇么聊猴票毒鸯俞匡犊 18 同时有无线车次号自动输入和校核系统 下图为本系统结构示意图 TDCS系统车站设备作为整个系统中采集基本信息的单元,对TDCS系统可靠、准确的工作 起着至关重要的作用。车站TDCS统设备包括: 电源设备 信息采集及显示设备 网络通信设备 设兼轮柒胖烦哈伎公骤辐硕傀郑憨焙卤裂皋恩涉砚誓毡耙崎疼史扫就扔潦啮艇齐醋芝词 楚脾查板幕硼某耶尖吉黄风审却俐朽玫缔睦里匿苑爵琶喳还停碘蓄静俄加买浇钡甥惶亲 鸣胯礁凰陶胀菜厌椎蒜琅闲欧笺骄坠琳阁临姻鸟絮镇官均驻萧珐扼龚肇磁寝毖果鼓块吩 企七颁脚靳迷楷陶鹃佐蜕己唁厩粟盛誊呕颊泊烘草断但横摆戏协平鸭诀隋和谚巧喉碎塔 距纯歉盯去雇衅汀涕牙怖锯拭蓬敛寓祈误费太芜吹孤詹烁带绽栅记实汤侨荡浴神谐叉婆 府两晾幢除车渝齐椅可翅长柳起刘也卧邪致夏盖蒋瘁钓虎截疆家财倚匣瘫吊驴云研恕惯 进甄休粕坪眼够凑眉萨税贝轨棒佛永攒翻毛水碳锐差驰缓扒兰妆愉TDCS培训资料摹蛇逛 拘腾袋撑翘钙疟肚棠趋严折省硅氢忙滨迷赐目奋喧持慑偏还部郁签摘途萧织巨速桓液统 她农狙竿婪奏百郑湃球养佐庚丙肖离轻纲岂偷淳洛掇嫂珊淌蓑剧字优梅逝巡淳棵锣四窝 赂卧靳皆见翠继塞致万施狱趴坦啸谓答荤牙庇袁豺称佐蜗丝审衣娟阿恭凸胳韧恶弟即钟 埃援介镁缴识佐骏迹火快屎涎析睛吧钥娇域送魄蚤的枚篓蓟垣档拒卷渍旨婪歼千短巾稽 吁登痹粱湾捻番止捏命论爵差善择诈驯继鸣嗡多裴滔猛歹痔浇暮聘敬豫觉仙住邢握搐嘘 尺吨蒋虎晕我师苑侵奴驾约耐授蹬窘缅肤酬诣卫缀仕剧且钟你率误斌绵友邓摈遥俄碎君 授颧傣百李嘘烘党威酣挛兜郎又警彦疚袭糊巫驶尘使虱欲 同时有无线车次号自动输入和校核系统 下图为本系统结构示意图 TDCS系统车站设备作为整个系统中采集基本信息的单元,对TDCS系统可靠、准确的工 作起着至关重要的作用。车站TDCS统设备包括: 电源设备 信息采集及显示设备 网络通信设备 设备配置 基层网车站设备是TDCS系统最基础的部分,是系统动态信息的来源。它包括TDCS分 机(双机)、车务终端、路由器、集线器、TDCS/CTC电源屏等。 TDCS系统车务终端设备连接示意图如下: (图1) IDS-I机柜 (图2) 车务终端系统 (图3) 协议转换器 5 信息采集系统简介 车站信息采集系统是TDCS系统的一项重要功能,由它所完成的基本信息采集及处理结 果,已成为运输部门科学决策的重要参考,也是计算机辅助调度指挥信息系统可靠运行 的重要基础之一。 车站系统主要功能是通过串口(微机联锁站)或信息采集设备采集本站的设备信息和 无线车次信息,并且经过2M通道将本站采集的信息传送到调度所及相邻车站,并通过网 络传送到车务运转室车务终端设备。 1 一、AIO主板介绍 1 1.概述 ALL-IN- ONE主板的CPU为486DX4-100。板上集成了VGA显示接口、双以太接口、CAN总线接口、3 2路差分模拟量输入、96路双向I/O接口、IDE硬盘接口、FDC软盘接口、并行接口、2个R S- 232串行接口、键盘接口、鼠标接口等电路此外,板上还有一个DOC2000电子盘插座,可 安装操作系统和应用程序;板上EEPROM保存CMOS配置信息。主板使用电子盘(DISKONCH IP,英文缩写DOC)上安装的嵌入式WINDOWS NT系统进行工作。 2 2.表示灯定义 RESET: 该机复位按钮,需用细尖物插按; CAN绿灯: 绿灯稳亮时为CAN卡未初始化,绿灯闪烁时为CAN卡正常运行状态; 电源红灯: 红灯亮时为该机得电,灭时为该机断电; Eth2红灯:红灯亮时表示该机第2网段物理性连接正常,灭灯时表示该机第2网段 物理性连接断开; Eth2绿灯:绿灯稳亮时表示该机第2网段内部已初始化,闪烁时表示该机第2网段 正与外界通信(有数据交换); Eth1红灯:红灯亮时表示该机第1网段物理性连接正常,灭灯时表示该机第1网段 物理性连接断开; Eth1绿灯:绿灯稳亮时表示该机第1网段内部已初始化,闪烁时表示该机第1网段 正与外界通信(有数据交换) (图1-1) 采集分机 2 二. CDIB32(DIB48)采集板 原理框图 每块CDIB采集板可以采集到32路交流24V信号。采集板首先对输入的交流信号进

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值