codevs 3333 高階打字機

2022-04-04 21:28:39 字數 1385 閱讀 8642

時間限制: 1 s

空間限制: 256000 kb

題目等級 : 大師 master

題目描述 description

早苗入手了最新的高階打字機。最**自然有著與以往不同的功能,那就是它具備撤銷功能,厲害吧。

請為這種高階打字機設計乙個程式,支援如下3種操作:

2.u x:撤銷最後的x次修改操作。(undo操作)

(注意query操作並不算修改操作)

文章一開始可以視為空串。

輸入描述 input description

第1行:乙個整數n,表示運算元量。

以下n行,每行乙個命令。保證輸入的命令合法。

輸出描述 output description

每行輸出乙個字母,表示query操作的答案。

樣例輸入 sample input

t at b

t cq 2

u 2t c

q 2樣例輸出 sample outputbc

資料範圍及提示 data size & hint

對於40%的資料 n<=200;

對於50%的資料 n<=100000;保證undo操作不會撤銷undo操作。

《高階挑戰》

對於100%的資料 n<=100000;undo操作可以撤銷undo操作。

裸主席樹

屠龍寶刀點選就送

#include #define n 2005000

char

str[n];

int ls[n],rs[n],r=n/20

,n,len[n],rt[n],now,tot;

void update(int l,int r,int x,int &y,int t,char

v) ls[y]=ls[x];

rs[y]=rs[x];

int mid=(l+r)>>1

;

if(t<=mid) update(l,mid,ls[x],ls[y],t,v);

else update(mid+1

,r,rs[x],rs[y],t,v);

}void ask(int l,int r,int x,int y,int

t)

int mid=(l+r)>>1

;

if(t<=mid) ask(l,mid,ls[x],ls[y],t);

else ask(mid+1

,r,rs[x],rs[y],t);

}int

main()

else

if(opt[0]=='u'

)

else

ch=getchar();

}return0;

}

高階打字機

早苗入手了最新的高階打字機。最 自然有著與以往不同的功能,那就是它具備撤銷功能,厲害吧。請為這種高階打字機設計乙個程式,支援如下3種操作 t x 在文章末尾打下乙個小寫字母x。type操作 u x 撤銷最後的x次修改操作。undo操作 注意query操作並不算修改操作 q x 詢問當前文章中第x個字...

高階打字機

題目描述 請為一種高階打字機設計乙個程式,支援如下3種操作 2.u x 撤銷最後的x次修改操作。undo操作 注意query操作並不算修改操作 文章一開始可以視為空串。輸入描述 第1行 乙個整數n,表示運算元量。以下n行,每行乙個命令。保證輸入的命令合法。輸出描述 每行輸出乙個字母,表示query操...

高階打字機

題目描述 早苗入手了最新的高階打字機。最 自然有著與以往不同的功能,那就是它具備撤銷功能,厲害吧。請為這種高階打字機設計乙個程式,支援如下3種操作 1.t x 在文章末尾打下乙個小寫字母x。type操作 2.u x 撤銷最後的x次修改操作。undo操作 注意query操作並不算修改操作 3.q x ...