Splay 模板 學習(待更新

2021-08-27 11:33:19 字數 2558 閱讀 2127

以hiho104為例

看著hiho裡的說明,寫了乙個這個東西,先上乙個好理解的模板

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

typedef

set::iterator sit;

const ll mod=1e9+7;

const

double eps=1e-9;

const

int inf=0x3f3f3f3f;

struct streesp[200010];

int root,cnt;

void pushup(int rt)

void rro(int rt)else root=rt;

sp[rt].fa=gf;

sp[rt].r=fa;

sp[fa].fa=rt;

pushup(fa);pushup(rt);

}void lro(int rt)else root=rt;

sp[rt].fa=gf;

sp[rt].l=fa;

sp[fa].fa=rt;

pushup(fa);pushup(rt);

}void splay(int x,int y)

else

else

if(sp[fa].r==x&&sp[gf].r==fa)

else

if(sp[fa].r==x&&sp[gf].l==fa)

else }}

}void ist(int &k,int x,int fa)

if(xelse ist(sp[k].r,x,k);

}int pre,nxt;

void fdpre(int rt,int x)

if(sp[rt].valelse

}void fdnxt(int rt,int x)

else

if(sp[rt].val>x)

else

}void del(int l,int r)

void init()

void print(int rt)

char op[2];

int main(void)

else

if(op[0]=='q')

else

//for(int i=1;i<=7;i++)printf("%d %d %d %d\n",i,sp[i].val,sp[i].l,sp[i].r);}}

return

0;}

果然還是顯得太長了,看一看大佬們的寫法,再學習一下,打算再壓一下

看一下這個大佬的講解

updated:執行效率上沒有任何區別,主要是改掉了rotate函式,然後順便改下面的函式的時候發現很多東西可以省略掉

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

typedef

set::iterator sit;

const ll mod=1e9+7;

const

double eps=1e-9;

const

int inf=0x3f3f3f3f;

struct streesp[200010];

int root,cnt;//根,節點個數

void pushup(int rt)

void ro(int rt)

void splay(int x,int y)

ro(x);

}}void ist(int &k,int x,int fa)

if(x0],x,k);

else ist(sp[k].ch[1],x,k);

}int pre,nxt;

void fdpre(int rt,int x)

if(sp[rt].val1],x);}

else

}void fdnxt(int rt,int x)

else

if(sp[rt].val>x)

else

}void del(int l,int r)

void init()

void print(int rt)

char op[2];

int main(void)

else

if(op[0]=='q')

else

// printf("%d\n",root);

// for(int i=1;i<=7;i++)printf("%d %d %d %d\n",i,sp[i].val,sp[i].ch[0],sp[i].ch[1]);}}

return

0;}

在接下來就是更新用法了。。。挖個坑吧,慢慢填

最短模板,待更新。

spfa void add int u,int v,int w bool spfa int s return true dijkstra void dijkstra int n,int v,int dist,int prev,int c maxnum maxnum dist v 0 s v 1 依次...

最短模板,待更新。

spfa void add int u,int v,int w bool spfa int s return true dijkstra void dijkstra int n,int v,int dist,int prev,int c maxnum maxnum dist v 0 s v 1 依次...

學習筆記 splay入門(更新中)

宣告 本部落格所有隨筆都參照了網路資料或其他部落格,僅為博主想加深理解而寫,如有疑問歡迎與博主討論 終於學習了 spaly splay 聽說了很久,因為dalao總是那這個開玩笑所以對它有深深的恐懼.但是學起來沒有那麼難啦,可能是因為提前學了替罪羊樹?學替罪羊樹真的是痛苦555 p3369 模板 普...