日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Luogu】P1383高级打字机

發布時間:2024/9/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Luogu】P1383高级打字机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可持久化線段樹模板題之一。

權當溫習主席樹模板

#include<cstdio> #include<cstdlib> #include<cctype> #define left (rt<<1) #define right (rt<<1|1) #define mid ((l+r)>>1) #define lson l,mid,left #define rson mid+1,r,rightinline long long read(){long long num=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}while(isdigit(ch)){num=num*10+ch-'0';ch=getchar();}return num*f; }int root[2000000]; int ls[2000000]; int rs[2000000]; char tree[2000000]; int len[2000000]; int ID; void add(int l,int r,int &rt,char x,int pos,int last){rt=++ID;if(l==r){tree[rt]=x;return;}ls[rt]=ls[last];rs[rt]=rs[last];if(pos<=mid) add(l,mid,ls[rt],x,pos,ls[last]);else add(mid+1,r,rs[rt],x,pos,rs[last]); }int query(int pos,int l,int r,int rt){if(l==r) return rt;if(pos<=mid) return query(pos,l,mid,ls[rt]);else return query(pos,mid+1,r,rs[rt]); }int now;int main(){int n=read();for(int i=1;i<=n;++i){char ch[10];int x;scanf("%s",ch);if(ch[0]=='Q'){x=read();int pos=query(x,1,n,root[now]);printf("%c\n",tree[pos]);}else if(ch[0]=='U'){x=read();now++;len[now]=len[now-x-1];root[now]=root[now-x-1]; }else{char c[10];scanf("%s",c);now++;len[now]=len[now-1]+1;add(1,n,root[now],c[0],len[now],root[now-1]);}}return 0; }

?

轉載于:https://www.cnblogs.com/cellular-automaton/p/7509828.html

總結

以上是生活随笔為你收集整理的【Luogu】P1383高级打字机的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。