題目大意:
有 \(n(n \le 80000)\) 只寵物或領養者依次來到寵物收養場,他們都有乙個特徵值。
當有乙隻寵物進入收養場時,如果存在等待的領養者,會從領養者中挑選和寵物特徵值最接近的領養者匹配(然後離開收養場);否則,寵物等待。
當有乙個領養者進入收養場時,如果存在等待的寵物,會從寵物中挑選和領養者特徵值最接近的寵物匹配(然後離開收養場);否則,領養者等待。
每次匹配,答案都會加上匹配的寵物和領養者的差的絕對值,求答案。
解題思路:
首先這種邊界性問題考慮用二分解決。
但是資料是動態的(動態插入和刪除),所以考慮用集合(set)來維護資料,然後在set上進行二分。
實現**如下:
#include using namespace std;
const int maxn = 80080, mod = 1000000;
setpets, owners;
int n, ans, op, a;
void solve(set&st, int a)
else
else
else }}
}int main()
else
}printf("%d\n", ans);
return 0;
}
HNOI2004 寵物收養場
凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這樣他就能夠...
HNOI2004 寵物收養場
題目描述 凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這...
HNOI2004 寵物收養場 splay
題目描述 凡凡開了一間寵物收養場。收養場提供兩種服務 收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,凡凡根據領養者的要求通過他自己發明的乙個特殊的公式,得出該領養者希望領養的寵物的特點值a a是乙個正整數,a 2 31 而他也給每個處在收養場的寵物乙個特點值。這...