宇宙飞船
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
Description
在一个宇宙飞船停靠站中,有一条特殊的轨道系统,轨道如图所示。每艘宇宙飞船从入口A飞入停靠站,最终从出口B飞向太空。在停靠站中,这些飞船的顺序可以重新调整。假设从入口A飞来的飞船共有n艘(n≤1000),它们依次编号为1, 2, 3, …, n。注意,在飞船进入停靠站前,它们彼此是分离的,可以分别选择进入停靠站C或直接飞往出口B。
但是需要遵守以下规则:
- 一旦某艘飞船进入停靠站C,它就不能再返回入口A。
- 一旦某艘飞船离开停靠站C并飞往出口B,它就不能再返回停靠站C。
现在,停靠站的调度员需要判断是否能将这些飞船按照指定的顺序a1, a2, …, an从出口B有序发射出去。请你帮助判断是否可以完成这样的调度。

Input Format
第一行包含一个整数n (n≤1000),表示飞船的数量。
第二行包含n个整数,表示目标顺序a1, a2, …, an。
Output Format
如果可以实现指定的飞船顺序,从出口B按顺序发射,请输出字符串"YES";否则输出字符串"NO"。(注意输出需要大写,不包含引号)。
5
5 4 3 2 1
YES
Hint
这是一个经典的栈模拟问题,调度过程可以看作是一个入栈和出栈的过程。我们可以将其分为三个状态:未入栈(还在入口A)、栈中(停靠站C)、已出栈(从出口B发射)。
关键点在于:
- 当某艘飞船要被发射(出栈)时,它前面的所有飞船必须已经发射或在停靠站C中按顺序堆叠。
- 停靠站C中的飞船顺序应该是从大到小(从栈顶到栈底),否则无法满足目标顺序。
我们可以通过以下步骤解决问题:
- 模拟每艘飞船的入栈和出栈过程。
- 如果某艘飞船需要发射且停靠站中的顺序无法满足要求,则输出"NO"。
- 如果所有飞船都能按照目标顺序发射,则输出"YES"。
例如,对于输入5 4 3 2 1,可以依次将飞船5, 4, 3, 2, 1按照目标顺序发射,输出"YES"。
而对于输入4 3 2 5 1,由于飞船1在飞船5之后发射,不符合规则,输出"NO"。
ACM寒假第二次训练
- Status
- Done
- Rule
- XCPC
- Problem
- 8
- Start at
- 2025-1-16 14:00
- End at
- 2025-1-16 17:00
- Duration
- 3 hour(s)
- Host
- Partic.
- 37