codevs 1170 雙棧排序

2022-05-15 18:12:10 字數 1095 閱讀 9085

/*

好題啊 好題啊

而然還是看了一眼題解啊

有那麼一點思路 但是離寫出**還很遠

考慮必須分開放倒兩個棧裡的情況

即存在i*/

#include

#include

#include

#define maxn 1010

using

namespace

std;

int n,m,a[maxn],num,head[maxn],color[maxn],mx[maxn][25

],p[maxn],falg;

ints1[maxn],top1,s2[maxn],top2;

struct

nodee[maxn*maxn*2

];int max(int x,int

y)void add(int

from,int

to)void

insert()

void

get()

}int query(int l,int

r)int dfs(int

x)

else

if(color[v]==color[x])return0;

}return1;

}int

main()

for(int i=1;i<=n;i++)

if(color[i]==0

) }

if(falg==1)

int now=1

;

for(int i=1;i<=n;i++)

else

s1[++top1]=a[i];printf("a "

); }

}else

else

while(s1[top1]==now)

s2[++top2]=a[i];printf("c "

); }}}

for(int i=now;i<=n;i++)

while(top2&&i==s2[top2])

}return0;

}

雙棧排序(codevs 1170)題解

tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a如果輸入序列不為空,將第乙個元素壓入棧s1 操作b如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c如果輸入序列不為空,將第乙個元素壓入棧s2 操作d如果棧s2不為空,將...

1170 雙棧排序

2008年noip全國聯賽提高組 description tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a如果輸入序列不為空,將第乙個元素壓入棧s1 操作b如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c如果輸入序列...

1002 雙棧排序

description tom最近在研究乙個有趣的排序問題。如圖所示,通過2個棧s1和s2,tom希望借助以下4種操作實現將輸入序列公升序排序。操作a 如果輸入序列不為空,將第乙個元素壓入棧s1 操作b 如果棧s1不為空,將s1棧頂元素彈出至輸出序列 操作c 如果輸入序列不為空,將第乙個元素壓入棧s...