都是BST的基本操作,只要实现添加,删除,查找基本就行了。由于在同一时间在收养所里的要么都是宠物,要么都是收养者,因此用Splay维护在收养所中的人(宠物)的值,然后根据情况插入或者查找就行了。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<stack>
#include<cmath>
#include<vector>
#define inf 0x3f3f3f3f
#define Inf 0x3FFFFFFFFFFFFFFFLL
#define eps 1e-9
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
const int maxn=100000+10;
const int mod=1000000;
int ch[maxn][2],pre[maxn],val[maxn],root,tot;
void NewNode(int &rt,int fa,int v)
{
rt=++tot;
ch[rt][0]=ch[rt][1]=0;
pre[rt]=fa;val[rt]&#