解析:
就算知道是二分图染色还是不会TT。
首先考虑怎么判断是否有解。
a [ i ] 和 a [ j ] 不能压入同一个栈(在同一个栈中出现过)⇔ 存在一个k,使得 i < j < k 且 a [ k ] < a [ i ] < a [ j ]
严格证明就比较复杂了,我就说如何感性理解吧(反正在考场上也没几个人会去严格证明)。
因为一个数只能进出一次,k 要排在前面所以弹出 k 时 i 和 j 都在栈里,如果两者在同一个栈弹出后顺序就错误了,然后找不到除这种情况外的反例,于是就这样了。。。
所以如果输入数据不能使得所有限制成立则无解,然后就可以转化成二分图染色来判定,不能在同一个栈中就连边。
关于输出答案,因为要让字典序最小肯定是尽量加在S1里面,实在不行加进S2。
代码:
欢迎加入团队