AC日記 寵物收養所 bzoj 1208

2022-05-14 06:30:11 字數 1451 閱讀 7505

1208

思路:一棵splay樹;

如果來者是寵物且樹空,就將其加入樹中;

如果樹不空,則查詢前驅後繼,取最優,然後刪點;

對人亦然;

注意邊界和取模,最後的ans用long long其餘用int即可;

來,上**:

#include #include 

#include

using

namespace

std;

#define maxn 80005

#define mod 1000000

#define inf 0x7fffffff

struct

treenodetype

void create(int

x)

};struct treenodetype tree[maxn<<1

];int

n,tot,flag,root;

long

long

ans;

inline

int getson(int

now)

inline

void updata(int

now)

inline

void rotate(int

now)

void splay(int

now)

root=now;

}void insert(int

x) opi=now,now=tree[now].ch[x>tree[now].key];

if(!now)}}

}inline

intpre()

inline

intsuc()

void

del()

if(!tree[root].ch[0]&&!tree[root].ch[1

])

if(tree[root].ch[0]&&!tree[root].ch[1

])

if(!tree[root].ch[0]&&tree[root].ch[1

])

int tmp=pre(),pos=root;

tree[tmp].ch[

1]=tree[root].ch[1

]; tree[tree[tmp].ch[

1]].opi=tmp;

root=tree[root].ch[0],tree[root].opi=0

; tree[pos].destroy();

splay(tree[tmp].ch[

1]);

}int

main()

else

del(),splay(to),del();}}

}cout

return0;

}

BZOJ 1208, 寵物收養所

傳送門 編寫乙個支援插入 刪除元素,查詢數列中最接近某值的元素的資料結構。保證沒有重複元素存在出現在樹中。treap和splay都可做。splay苦手選擇treap,然而寫得奇醜無比。查詢最接近某值的元素可以將該值插入樹中查詢前驅與後繼,後比較。查詢完以後再刪掉。include include co...

Bzoj1208 寵物收養所

最近,阿q開了一間寵物收養所。收養所提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,阿q根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養所的寵物乙個特點值。這樣他...

Bzoj1208 寵物收養所

最近,阿q開了一間寵物收養所。收養所提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,阿q根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養所的寵物乙個特點值。這樣他...