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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[2020.10.25NOIP模拟赛]序列【Splay】

發布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [2020.10.25NOIP模拟赛]序列【Splay】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/U136336?contestId=36038


題目大意

iii次找到第iii大的數字位置xix_ixi?并且翻轉[i,xi][i,x_i][i,xi?],求輸出序列xxx


解題思路

記錄一下每個排名在SplaySplaySplay中的位置,然后暴力翻轉即可。


codecodecode

#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=1e5+10; int n,root,t[N][2],val[N],p[N],siz[N],fa[N],r[N]; bool Direct(int x) {return t[fa[x]][1]==x;} void Connect(int x,int y,int dir) {t[x][dir]=y;fa[y]=x;return;} void PushUp(int x) {siz[x]=siz[t[x][0]]+siz[t[x][1]]+1;return;} void rev(int x){swap(t[x][0],t[x][1]);r[x]^=1;return; } void PushDown(int x){if(!r[x])return;rev(t[x][0]);rev(t[x][1]);r[x]=0;return; } void Rotate(int x){PushDown(fa[x]);PushDown(x);int y=fa[x],z=fa[y];int xs=Direct(x),ys=Direct(y);Connect(y,t[x][xs^1],xs); Connect(x,y,xs^1);Connect(z,x,ys);PushUp(y);PushUp(x);return; } void Downdata(int x){if(!x)return;Downdata(fa[x]);PushDown(x);return; } void Splay(int x,int z){Downdata(x);while(fa[x]!=z){int y=fa[x];if(fa[y]==z)Rotate(x);else if(Direct(x)==Direct(y))Rotate(y),Rotate(x);else Rotate(x),Rotate(x);}if(!z)root=x;return; } int rk(int x){Splay(x,0);return siz[t[x][0]]; } int find(int x,int k){PushDown(x);if(k<=siz[t[x][0]])return find(t[x][0],k);if(siz[t[x][0]]+1==k)return x;return find(t[x][1],k-siz[t[x][0]]-1); } bool cmp(int x,int y){if(val[x+1]==val[y+1])return x<y;return val[x+1]<val[y+1]; } void print(int x){if(!x)return;print(t[x][0]);printf("%d ",val[x]);print(t[x][1]); } int main() {freopen("31.in","r",stdin);freopen("data.out","w",stdout);scanf("%d",&n);siz[1]=1;for(int i=2;i<=n+1;i++){scanf("%d",&val[i]);t[i][0]=i-1;fa[i-1]=i;p[i-1]=i-1;PushUp(i);}sort(p+1,p+1+n,cmp);t[n+2][0]=n+1;fa[n+1]=n+2;PushUp(n+2);root=n+2;for(int i=1;i<=n;i++){int w=rk(p[i]+1);printf("%d ",w); // print(root);putchar('\n');int x=find(root,i),y=find(root,w+2);Splay(x,0);Splay(y,x); rev(t[y][0]); // print(root);putchar('\n');}return 0; }

總結

以上是生活随笔為你收集整理的[2020.10.25NOIP模拟赛]序列【Splay】的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 成人妇女淫片aaaa视频 | 最新高清无码专区 | 少妇裸体淫交视频免费看高清 | 成人激情自拍 | 蜜乳av一区二区 | 成人在线一区二区三区 | 中文有码视频 | 一区二区三区在线观 | 最新一区二区三区 | 青青操免费在线视频 | 日韩视频国产 | 精品日韩 | 美女一区 | 亚洲v| 久久久精品在线 | 夜夜操夜夜摸 | 姐姐的朋友2在线 | 国产xxxx做受视频 | 精品国产一区二区三 | 亚洲理伦| 天天插天天爽 | 久久偷看各类wc女厕嘘嘘偷窃 | 久久久久久91亚洲精品中文字幕 | 欧美性大战久久久久久久蜜桃 | av在线入口 | 午夜大片网 | 国产探花视频在线观看 | 国产精品12 | 免费精品视频 | 女裸全身无奶罩内裤内衣内裤 | 国产又大又粗又硬 | 色九九| 国产高清一| 久久五月网 | 荫蒂被男人添免费视频 | 国产日韩在线看 | 欧美a√| 91丝袜一区二区三区 | 国产三级精品在线观看 | 色网址在线观看 | 国产乱码精品一区二区三区五月婷 | 国产美女福利视频 | 国产伦精品一区 | 国产在线一二三区 | 韩国成人理伦片免费播放 | 国产精品久久久久久婷婷天堂 | 嫩草国产精品 | 国产精品免费av | 日本黄色天堂 | 久久久久久网 | 91影院在线观看 | 日韩极品在线观看 | 夜夜操夜夜干 | 国产精品视频合集 | 偷看洗澡一二三区美女 | 饥渴放荡受np公车奶牛 | 国产资源在线看 | 在线成人免费观看 | 色成人综合 | 不卡在线一区 | 色无极亚洲色图 | www.555国产精品免费 | 日韩一区二区三区四区五区 | 亚洲精品在线视频免费观看 | 不卡av免费在线观看 | 高清av网址 | 亚洲av首页在线 | 久久久无码精品亚洲国产 | 女人叫床很黄很污句子 | 中文字幕久久熟女蜜桃 | 久久久久一区二区精码av少妇 | jizz日本在线 | 乱一色一乱一性一视频 | 欧美另类一区二区 | 日本做爰三级床戏 | 99热精品久久 | 欧美三级在线观看视频 | 色婷婷色| 一区二区三区在线免费 | 一级中文字幕 | 综合久久网 | 男人的天堂在线观看av | 日韩精品视频免费 | 肥婆大荫蒂欧美另类 | 色婷婷久久一区二区三区麻豆 | 精品人妻少妇一区二区 | 国产一级爽片 | 97涩涩网| 久久99国产精品久久99果冻传媒 | 污视频在线观看网址 | 丁香久久 | 黑森林av导航 | 国产专区视频 | 野外一级片 | 伊人久久亚洲 | 91精品啪在线观看国产线免费 | 黄视频在线观看免费 | 欲色影音| 国产欧美日韩在线视频 |