bzoj1500維修序列(splay)

2021-07-15 11:57:31 字數 912 閱讀 5888

感覺已經是乙個很好的模版了,手機上再理順一下思路,明天寫個思路清晰,**清楚的

更新**,感覺這次的**真是決了,絕對優美通俗易懂的**風格

不過**長難免bug多,還是要練**能力的

#include#include#include#include#include#define debug(x) cout<<#x<<"="<'9') if (ch=='-') f=-1;

ans=ch-'0';

while ((ch=getchar())>='0'&&ch<='9') ans=ans*10+ch-'0';

return ans*f;

}void up(int x)//updata

void down(int x)//downdata

} if (rev[x]) }

void rotate(int x)

void splay(int x,int k)

if (k==0) rt=x;

up(x);//up up up

}void clear(int x)

int build(int l,int r,int f)//個人獨有的build方式

ch[id][0]=build(l,mid-1,id);

ch[id][1]=build(mid+1,r,id);

up(id);//

return id;

}int find(int i,int k)

void insert()

void dell(int x)

void del()

void sett()

void rever()

void summ()

int main()

return 0;

}

BZOJ 1500, 維修數列

傳送門 編寫乙個支援插入 刪除 修改 翻轉 求和以及求和最大子串行的資料結構。splay無疑。但是寫太醜也是會tle的,比方說插入的時候應該以建樹的形式插入,而不是乙個點乙個點的形式。實現起來要注意的細節很多,對練習打splay挺有好處。陸陸續續除錯了好多天,總算在崩潰之前ac了 include c...

BZOJ 1500 維修數列

time limit 10 sec memory limit 64 mb submit 14433 solved 4701 submit status discuss 輸入的第1 行包含兩個數n 和m m 20 000 n 表示初始時數列中數的個數,m表示要進行的運算元目。第2行包含n個數字,描述初...

bzoj 1500 維修數列

輸入的第1 行包含兩個數n 和m m 20 000 n 表示初始時數列中數的個數,m表示要進行的運算元目。第2行包含n個數字,描述初始時的數列。以下m行,每行一條命令,格式參見問題描述中的 任何時刻數列中最多含有500 000個數,數列中任何乙個數字均在 1 000,1 000 內。插入的數字總數不...