BZOJ3196 Tyvj 1730 二逼平衡樹

2022-05-12 06:43:54 字數 2105 閱讀 5199

題目就不抄了,終於用c++a了這道題

有幾點需要注意的

1.k<<1|1而不是k<<1||1

2.程式如果中途退出,printf積累的結果將不會輸出,必須碰到cout也就是說,如果需要除錯輸出資訊,盡量用cout

**:

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include

10 #include11

#define inf 1000000000

12#define maxn 50000+100

13#define maxm 2000000

14#define eps 1e-10

15#define ll long long

16using

namespace

std;

17 inline int

read()

1821

while(ch>='

0'&&ch<='9')

22return x*f;23}

24int

n,m,tot,a[maxn],l[maxm],r[maxm],s[maxm],rnd[maxm],w[maxm],v[maxm];

25struct rect[4*maxn];

26 inline void pushup(int

k)27

28 inline void rturn(int &k)

29 30 inline void lturn(int &k)

31 32

void ins(int &k,int

num)

3336 s[k]++;

37if(v[k]==num)w[k]++;

38else

if(num

39

40else

41 42}

43void del(int &k,int

num)

4448

else

if(l[k]*r[k]==0)k=l[k]+r[k];

49else

if(rnd[l[k]]

5051

else 52

return;53

}54 s[k]--;

55if(numelse

del(r[k],num);56}

57int rank(int k,int

num)

5864

int pre(int k,int

num)

6573}74

int suc(int k,int

num)

7583}84

void build(int k,int x,int

y)85

91void change(int k,int x,int

y)92

98int query(int k,int x,int y,int

z)99

106int getpre(int k,int x,int y,int

z)107

114int getsuc(int k,int x,int y,int

z)115

122123

intmain()

124

137else

148 printf("

%d\n

",r);

149}

150if(ch==1)printf("

%d\n

",query(1,x,y,z)+1

);151

if(ch==4)printf("

%d\n

",getpre(1

,x,y,z));

152if(ch==5)printf("

%d\n

",getsuc(1

,x,y,z));

153}

154155

}156

return0;

157 }

view code

BZOJ3196 Tyvj 1730 二逼平衡樹

description 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 1.查詢k在區間內的排名 2.查詢區間內排名為k的值 3.修改某一位值上的數值 4.查詢k在區間內的前驅 前驅定義為小於x,且最大的數 5.查詢k在區間內的後繼 後繼定義為大於x,且最小的數 in...

bzoj3196 Tyvj 1730 二逼平衡樹

description 您需要寫一種資料結構 可參考題目標題 來維護乙個有序數列,其中需要提供以下操作 1.查詢k在區間內的排名 2.查詢區間內排名為k的值 3.修改某一位值上的數值 4.查詢k在區間內的前驅 前驅定義為小於x,且最大的數 5.查詢k在區間內的後繼 後繼定義為大於x,且最小的數 in...

bzoj3196 Tyvj 1730 二逼平衡樹

傳送門 終於把這個大坑填完了。sb樹套樹 看似最不合理的方案恰恰是正確方案,樹套樹並不會mle,它的空間複雜度非常科學,o nlogn 結果因為空間算錯陣列開小神奇的t掉,浪費了我兩天時間 嘛。貌似除了操作二沒什麼好說的。轉換成判定性問題就好了,二分o nlog 3 n 解決。其他按照正常線段樹和平...