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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[BZOJ]1503: [NOI2004]郁闷的出纳员

發(fā)布時(shí)間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [BZOJ]1503: [NOI2004]郁闷的出纳员 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SB平衡樹(shù)

#include<cstdio> #define MN 100000 #define L(x) c[x][0] #define R(x) c[x][1] #define rtf MN+1 #define rt L(rtf) #define INF 0x7FFFFFFF int fa[MN+5],c[MN+5][2],s[MN+5],p[MN+5],mk[MN+5],z[MN+5],tn; inline void mark(int x,int ad){z[x]+=ad;mk[x]+=ad;} inline void down(int x){if(mk[x])mark(L(x),mk[x]),mark(R(x),mk[x]),mk[x]=0;} inline void up(int x){s[x]=s[L(x)]+s[R(x)]+1;} inline int ran() {static int x=23333;return x^=x<<13,x^=x>>17,x^=x<<5; } void rotate(int x) {int f=fa[x],ff=fa[f],l=R(f)==x,r=l^1;fa[f]=x;fa[x]=ff;fa[c[x][r]]=f;c[ff][R(ff)==f]=x;c[f][l]=c[x][r];c[x][r]=f;up(f);up(x); } void ins(int f,int t,int x) {while(c[f][t])++s[f=c[f][t]],down(f),t=x>z[f];fa[c[f][t]=++tn]=f;z[tn]=x;p[tn]=ran();s[tn]=1;while(p[tn]>p[fa[tn]])rotate(tn); } int find(int x,int k) {while(down(x),k)if(k<=s[L(x)])x=L(x);else if(k-=s[L(x)]+1)x=R(x);return x; } void del(int x) {fa[c[fa[x]][0]=R(x)]=fa[x];while(x=fa[x])up(x); } int main() {int n,m,x,cnt=0;char t[MN+5];p[rtf]=INF;scanf("%d%d",&n,&m);while(n--){scanf("%s%d",t,&x);if(t[0]=='I')if(x>=m)ins(rtf,0,x);if(t[0]=='A')mark(rt,x);if(t[0]=='S'){mark(rt,-x);while(rt&&z[x=find(rt,1)]<m)del(x),++cnt;}if(t[0]=='F')printf("%d\n",x>s[rt]?-1:z[find(rt,s[rt]-x+1)]);}printf("%d",cnt); }

?

轉(zhuǎn)載于:https://www.cnblogs.com/ditoly/p/BZOJ1503.html

總結(jié)

以上是生活随笔為你收集整理的[BZOJ]1503: [NOI2004]郁闷的出纳员的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。