题目名称 221. [NOIP 2008]双栈排序
输入输出 twostack.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 15
题目来源 Gravatarzqzas 于2008-11-15加入
开放分组 全部用户
提交状态
分类标签
动态规划 图论 数学 贪心 NOIP/CSP
分享题解
通过:111, 提交:394, 通过率:28.17%
Gravatarconfoo 100 0.000 s 0.00 MiB C++
GravatarRapiz 100 0.000 s 0.00 MiB C++
GravatarAAAAAAAAAA 100 0.000 s 0.00 MiB C++
GravatarYoungsc 100 0.000 s 0.00 MiB C++
GravatarLCWhiStLe 100 0.000 s 0.00 MiB C++
Gravatar 100 0.000 s 0.00 MiB C++
Gravatarliuyiche 100 0.000 s 0.00 MiB C++
Gravatar郑霁桓 100 0.000 s 0.00 MiB C++
GravatardarkMoon 100 0.000 s 0.00 MiB C++
GravatarWAHT 100 0.005 s 0.34 MiB C++
关于 双栈排序 的近10条评论(全部评论)
思想奇^妙
GravatarShirry
2017-10-26 20:55 10楼
8
5 7 2 4 1 6 3
纯属逗我。坑我1A
事实上只有这一组数据的n是8
CHEAT!!
GravatarLCWhiStLe
2017-09-02 21:15 9楼
神题!直接膜题解
GravatarFoolMike
2016-11-17 20:36 8楼
http://acm.hdu.edu.cn/showproblem.php?pid=4751
二分图染色模板题
GravatarSOBER GOOD BOY
2016-10-04 18:11 7楼
二分图染色+模拟
GravatarSOBER GOOD BOY
2016-10-04 18:08 6楼
模拟水之
GravatarWAHT
2016-03-30 19:44 5楼
第11个点是在搞笑吗?
8
5 7 2 4 1 6 3
第二行只有七个数是几个意思,明明少一个数还在这儿招摇撞骗
GravatarDissolute丶Tokgo
2015-11-04 19:34 4楼
二分图染色。。。
Gravatarmikumikumi
2015-11-04 17:43 3楼
@kidjiao 如果认为题目有误不必 Cheat,因为即使不 AC 该题也还是会有相应的积分累入的。
Gravatar王者自由
2012-11-01 07:25 2楼
有一个点数据配挂了
输入少了一个数!
无法AC的同学自行CHEAT吧
Gravatarkidjiao
2012-11-01 00:01 1楼

221. [NOIP 2008]双栈排序

★★☆   输入文件:twostack.in   输出文件:twostack.out   简单对比
时间限制:1 s   内存限制:128 MiB

【问题描述】

Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和s2,Tom希望借助以下4种操作实现将输入序列升序排序。

Image:Noip08st1.jpg

  • 操作a
    • 如果输入序列不为空,将第一个元素压入栈Sl
  • 操作b
    • 如果栈S1不为空,将Sl栈顶元素弹出至输出序列
  • 操作c
    • 如果输入序列不为空,将第一个元素压入栈s2
  • 操作d
    • 如果栈S2不为空,将S2栈顶元素弹出至输出序列

如果一个l~n的排列P可以通过一系列操作使得输出序列为l,2,…,(n-1),n,Tom就称P是一个“可双栈排序排列”。例如 (1,3,2,4)就是一个“可双栈排序排列”,而(2,3,4,1)不是。下图描述了一个将(1,3,2,4)排序的操作序 列:

Image:Noip08st2.jpg

当然,这样的操作序列有可能有多个,对于上例(1,3,2,4),是另外一个可行的操作序列。Tom希望知道其中字典序最小的操作序列是什么。

【输入格式】

输入文件twostack.in的第一行是一个整数n。

第二行有n个刚空格隔开的正整数,构成一个1~n的排列。

【输出格式】

输出文件twostack.out共一行,如果输入的排列不是“可双栈排序排列”,输出数字0;

否则输出字典序最小的操作序列,每两个操作之间用空格隔开,行尾没有空格。

【输入样例1】

4
1 3 2 4

【输出样例1】

a b a a b b a b

【输入样例2】

4
2 3 4 1

【输出样例2】

0

【输入样例3】

3
2 3 1

【输出样例3】

a c a b b d

【数据范围】

30%的数据满足: n<=10

50%的数据满足: n<=50

100%的数据满足:n<=1000