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 而他也給每個處在收養所的寵物乙個特點值。這樣他...