国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ 1208 [HNOI2004] 寵物收養所

2019-11-08 02:03:19
字體:
來源:轉載
供稿:網友

Description

最近,阿Q開了一間寵物收養所。收養所提供兩種服務:收養被主人遺棄的寵物和讓新的主人領養這些寵物。每個領養者都希望領養到自己滿意的寵物,阿Q根據領養者的要求通過他自己發明的一個特殊的公式,得出該領養者希望領養的寵物的特點值a(a是一個正整數,a<2^31),而他也給每個處在收養所的寵物一個特點值。這樣他就能夠很方便的處理整個領養寵物的過程了,寵物收養所總是會有兩種情況發生:被遺棄的寵物過多或者是想要收養寵物的人太多,而寵物太少。 1. 被遺棄的寵物過多時,假若到來一個領養者,這個領養者希望領養的寵物的特點值為a,那么它將會領養一只目前未被領養的寵物中特點值最接近a的一只寵物。(任何兩只寵物的特點值都不可能是相同的,任何兩個領養者的希望領養寵物的特點值也不可能是一樣的)如果有兩只滿足要求的寵物,即存在兩只寵物他們的特點值分別為a-b和a+b,那么領養者將會領養特點值為a-b的那只寵物。 2. 收養寵物的人過多,假若到來一只被收養的寵物,那么哪個領養者能夠領養它呢?能夠領養它的領養者,是那個希望被領養寵物的特點值最接近該寵物特點值的領養者,如果該寵物的特點值為a,存在兩個領養者他們希望領養寵物的特點值分別為a-b和a+b,那么特點值為a-b的那個領養者將成功領養該寵物。 一個領養者領養了一個特點值為a的寵物,而它本身希望領養的寵物的特點值為b,那么這個領養者的不滿意程度為abs(a-b)?!救蝿彰枋觥磕愕玫搅艘荒戤斨?,領養者和被收養寵物到來收養所的情況,希望你計算所有收養了寵物的領養者的不滿意程度的總和。這一年初始時,收養所里面既沒有寵物,也沒有領養者。

Input

第一行為一個正整數n,n<=80000,表示一年當中來到收養所的寵物和領養者的總數。接下來的n行,按到來時間的先后順序描述了一年當中來到收養所的寵物和領養者的情況。每行有兩個正整數a, b,其中a=0表示寵物,a=1表示領養者,b表示寵物的特點值或是領養者希望領養寵物的特點值。(同一時間呆在收養所中的,要么全是寵物,要么全是領養者,這些寵物和領養者的個數不會超過10000個)

Output

僅有一個正整數,表示一年當中所有收養了寵物的領養者的不滿意程度的總和mod 1000000以后的結果。

Sample Input

50 20 41 31 21 5

Sample Output

3(abs(3-2) + abs(2-4)=3,最后一個領養者沒有寵物可以領養)

HINT

Source

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

set模擬平衡樹~

set真是好用啊……

x和y最好用set<int>::iterator型,這樣最后se.erase()的時候就可以直接除掉,不用再se.find()一遍。

思路和賬本的那道一樣啊,尋找大一點和小一點的比較更新答案即可~

#include<cstdio>#include<iostream>#include<set>using namespace std;#define inf 999999999int n,flag,num,now,ans;set<int> se;set<int>::iterator x,y; int abs(int u){	return u>0 ? u:-u;}int main(){	scanf("%d",&n);now=-1;se.insert(inf);se.insert(-inf);	while(n--)	{		scanf("%d%d",&flag,&num);		if(se.size()==2 || flag==now || now==-1)		{			se.insert(num);now=flag;continue;		}		y=se.lower_bound(num);x=y;y--;		if(abs(*x-num)<abs(*y-num) && *x!=inf)		{			ans+=abs(*x-num);se.erase(x);		}		else		{			ans+=abs(*y-num);se.erase(y);		}		ans%=1000000;	}	PRintf("%d/n",ans);	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华亭县| 灵璧县| 琼结县| 侯马市| 湖州市| 筠连县| 磐安县| 共和县| 宁城县| 青岛市| 安庆市| 金堂县| 个旧市| 宜州市| 宁蒗| 称多县| 如东县| 深水埗区| 绿春县| 石景山区| 浦北县| 大兴区| 太原市| 长垣县| 德令哈市| 定边县| 额济纳旗| 常宁市| 自贡市| 化州市| 舞阳县| 厦门市| 玉田县| 兰西县| 台中市| 博野县| 进贤县| 钟山县| 绥芬河市| 保德县| 页游|