NOIP2008 双栈排序(二分图染色+贪心模拟)

传送门

先考虑如果只有一个栈,哪些情况是不合法的。

我们会发现这样的情况就是不合法的,因为前面那个一定会被中间那个高的抵住。

如果有这样的情况,那么中间那个数就不可以和前面那个数放在一个栈中。

可以预处理出一个后缀最小值,判断这样的i,j,然后二分图染色看是否会矛盾。

如果不矛盾的话我们还要输出如何操作。

因为要求字典序最小,那么能使用第一个栈就尽量使用第一个栈。

当前能够不弹栈就先不弹栈。

实在已经是当前序列的下一个数了再弹栈。

原文地址:https://www.cnblogs.com/yyys-/p/11845083.html