首页 > 其他 > 详细

[?]

时间:2017-05-13 16:35:04      阅读:287      评论:0      收藏:0      [点我收藏+]

技术分享

 

 1 #include<stdio.h>
 2 #include<cstring>
 3 #define go(i,a,b) for(int i=a;i<=b;i++)
 4 const int N=100003;struct Chair_Man_Tree{int l,r,word;}t[N*10];
 5 int q,Root[N],sz,rig[N],mid;
 6 void insert(int& u,int L,int R,int pos,char w)
 7 {
 8     t[++sz]=t[u];u=sz;if(L==R){t[u].word=w;return;}mid=L+R>>1;
 9     pos>mid?insert(t[u].r,mid+1,R,pos,w):insert(t[u].l,L,mid,pos,w);
10 }
11 void find(int u,int L,int R,int pos)
12 {
13     if(L==R){printf("%c\n",t[u].word);return;}mid=L+R>>1;
14     pos>mid?find(t[u].r,mid+1,R,pos):find(t[u].l,L,mid,pos);
15 }
16 int main()
17 {
18     scanf("%d",&q);int now=0,i=0;go(I,1,q)
19     {
20         char c1,c2;int j;scanf(" %c",&c1);
21         if(c1==T)i++,scanf(" %c",&c2),Root[i]=Root[i-1],insert(Root[i],1,N,++now,c2),rig[i]=now;
22         if(c1==U)i++,scanf("%d",&j),j=i-j-1,Root[i]=Root[j],now=rig[i]=rig[j];
23         if(c1==Q)scanf("%d",&j),find(Root[i],1,N,j);
24     }
25     return 0;
26 }//Paul_Guderian

 

[?]

原文:http://www.cnblogs.com/Paul-Guderian/p/6849209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!