很裸的一道平衡樹的題。
唯一要思考的一點就是
需要維護乙個當前樹的種類,如果當前進來的與樹的種類相同的話,就直接插入,否則就找乙個最接近的的值並把那個值刪除,並記錄答案就行了。
**:
#include#include#define l ch[p][0]
#define r ch[p][1]
#define ll ch[ch[p][0]][0]
#define rr ch[ch[p][1]][1]
#define lr ch[ch[p][0]][1]
#define rl ch[ch[p][1]][0]
using namespace std;
const int inf = 0x3f3f3f3f;
const int mo = 1000000;
const int maxn = 100000;
int ch[maxn][2];
int sz[maxn],val[maxn];
int min,p = 0;
int top = 0,cnt = 0,ret;
int n,kind,root,ans = 0;
void init()
int del(int &p,int key)
else }
void find(int &p,int key)
else if(min > val[p] - key)min = val[p] - key,ret = p;
find(ch[p][key > val[p]],key);
}void rotate(int &p,int f)
void maintain(int &p,bool flag)
else
maintain(l,false);
maintain(r,true);
maintain(p,false);
maintain(p,true);
}void insert(int &p,int key)
sz[p]++;
if(key < val[p])insert(ch[p][0],key);
else insert(ch[p][1],key);
maintain(p,!(key < val[p]));
}void readdata()
else
}} printf("%d",ans);
}int main()
HNOI2004 寵物收養所 SBT
by cxlove 在找前驅和後繼的時候,可能出現前驅和後繼不存在,應當返回inf才對。每於一棵樹,要麼為空,要麼全為寵物或者全為人,加乙個標記,表示樹內現在的種類,對於乙個新進來的,判斷是否一致,一致則插入,否則找出乙個相鄰的刪掉。include include include include d...
HNOI2004寵物收養所
time limit 10 sec memory limit 162 mb submit 2796 solved 995 submit status discuss 最近,阿q開了一間寵物收養所。收養所提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,...
HNOI2004 寵物收養場
凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這樣他就能夠...