天天看點

NOIP2008 雙棧排序 染色+模拟

挺不錯的一道題,首先可以知道若存在形如 k<i<j 但 a[k]<a[i]<a[j]這樣的,那麼i,j一定不能(從始至終不能)進入同一個棧 例如 2 3 1,若2 3進入同一個棧,那麼1再進棧然後馬上出棧,這時候,2沒有辦法在3之前出來。

是以對于這樣的i,j我們連一條邊,然後dfs染色,若染色中發現相鄰點顔色相同,則無解,否則我們按照1,2,1,2的順序染色。

确定了每一個數屬于哪個棧後,用2個stack模拟一下就好了。

繼續閱讀