數列 專殺Splay版

2022-05-11 01:36:47 字數 1370 閱讀 1143

時間限制: 3 sec  記憶體限制: 128 mb

提交: 49  解決: 7

輸入乙個數列,你需要進行如下操作: 

1、 把編號為i的數值改為k 

2、 輸出從小到大排序後第k個數

輸入檔案第一行包含兩個整數n、m,分別表示數列長度與操作個數。 

第二行有n個整數,為初始數列中的n個整數。 

接下來m行每行如果只有乙個整數k,那麼就是輸出第k小數,否則兩個整數i,k表示把第i個數的數值改為k。

輸出所有要求輸出的數,每個數單獨一行。

5 35 3 2 1 1

42 643

5n,m≤200,000

數列中所有數字的絕對值不大於100,000,000

#include#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

const

int maxn=200001

;int

n,m;

struct

node

bst[maxn],*root;

node *pos=bst;

queue

mem;

void update(node* &r)

void rotate(node* &r,int

b)void newnode(node* &r,int

key)

void insert(node* &r,int

key)

update(r);

}void delet(node* &r,int

key)

else

}else

update(r);

}int

end,len;

int read(char s,int

begin)

if(begin==i)return

2000000000

; end=i+1

;

return ans*f;

}int find(node* &r,int

x)

else

return

2000000000;}

inta[maxn];

intmain()

char s[101

]; getchar();

for(i=1;i<=m;i++)

else

}return0;

}

Splay指標版詳解

經過一天re的洗禮,終於把指標版 mathrm 趕出來了,淚目 看了一圈,居然沒有找到 mathrm 的指標版題解,氣抖冷,指標黨什麼時候才能站起來!先放上自己的部落格 雖然都是平衡樹,但是 mathrm 和 mathrm 是不一樣的 mathrm 維持平衡的條件是每個節點隨機賦予的優先順序,但 m...

uva 11922 splay維護數列

splay第一題,有了treap的基礎以後感覺splay還是比較好理解的,splay的優勢在於程式設計複雜度比較低且效率不錯,通過splay操作以及衍生的split和merge操作可以實現很強大的功能。1 include 2 include 3 include 4 using namespace s...

NOI2005 維護數列 splay

請寫乙個程式,要求維護乙個數列,支援以下6種操作 請注意,格式欄中的下劃線 表示實際輸入檔案中的空格 1.插入 insert posi tot c1 c2 ctot 在當前數列的第posi個數字後插入tot個數字 c1,c2,ctot 若在數列首插入,則posi為0 2.刪除 delete posi...