亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

hdu 1512 左偏樹

2019-11-11 05:05:40
字體:
來源:轉載
供稿:網友

題目:

Monkey King

Time Limit: 10000/5000 MS (java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5571    Accepted Submission(s): 2395PRoblem DescriptionOnce in a forest, there lived N aggressive monkeys. At the beginning, they each does things in its own way and none of them knows each other. But monkeys can't avoid quarrelling, and it only happens between two monkeys who does not know each other. And when it happens, both the two monkeys will invite the strongest friend of them, and duel. Of course, after the duel, the two monkeys and all of there friends knows each other, and the quarrel above will no longer happens between these monkeys even if they have ever conflicted.Assume that every money has a strongness value, which will be reduced to only half of the original after a duel(that is, 10 will be reduced to 5 and 5 will be reduced to 2).And we also assume that every monkey knows himself. That is, when he is the strongest one in all of his friends, he himself will go to duel. InputThere are several test cases, and each case consists of two parts.First part: The first line contains an integer N(N<=100,000), which indicates the number of monkeys. And then N lines follows. There is one number on each line, indicating the strongness value of ith monkey(<=32768).Second part: The first line contains an integer M(M<=100,000), which indicates there are M conflicts happened. And then M lines follows, each line of which contains two integers x and y, indicating that there is a conflict between the Xth monkey and Yth. OutputFor each of the conflict, output -1 if the two monkeys know each other, otherwise output the strongness value of the strongest monkey in all friends of them after the duel. Sample Input
520161010452 33 43 54 51 5 Sample Output
855-110

分析:

每一只猴子看做一個結點,建立左偏樹,樹根維護最大值。若兩結點樹根相同,說明兩只猴子是朋友,輸出-1;

否則,兩根節點值減半,刪除,重新與原樹合并得兩新樹,兩新樹合并后返回根節點值。

本題僅涉及到左偏樹部分操作。

左偏樹入門:

http://wenku.baidu.com/view/1c18eff9aef8941ea76e051b.html

http://wenku.baidu.com/view/004aa1ee19e8b8f67c1cb9d4.html?from=search

http://sunmoon-template.blogspot.ca/2014_12_01_archive.html

代碼:

#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<ctype.h>    //tower()#include<set>#include<iomanip>// cout<<setprecision(1)<<fixed<<a;#include<vector>   #include<time.h>  #include<assert.h>  //assert#include<cmath>	#include<algorithm>#include<bitset>#include<limits.h>#include<stack>#include<queue>using namespace std;const int maxn=100050;const int inf=INT_MAX-100;struct node{    int val,dis,lt,rt,fa;//fa 父節點}ltree[maxn];int n,q,t;void maketree(int a,int k){//結點成樹 a結點值為k     ltree[a].val=k;    ltree[a].fa=a;    ltree[a].lt=ltree[a].rt=0;    ltree[a].dis=(a==0)?-1:0;}int find(int x){//非遞歸路徑壓縮,返回所在樹根節點     int s,k,j;    s=k=x;    while(s!=ltree[s].fa) s=ltree[s].fa;    while(k!=s){        j=ltree[k].fa;        ltree[k].fa=s;        k=j;    }    return s;}int merge(int a,int b){//兩棵樹合并 改變rt,dis,fa     if(a==0) return b;    if(b==0) return a;    if(ltree[a].val<ltree[b].val) swap(a,b);    ltree[a].rt=merge(ltree[a].rt,b);//b接在a最右邊 	int &l=ltree[a].lt,&r=ltree[a].rt;//左右子樹的引用,取別名,不另占內存,值同時修改        ltree[r].fa=a;//ltree[l].fa=    if(ltree[l].dis<ltree[r].dis) swap(l,r);//維持左偏性     if(r==0) ltree[a].dis=0;	else ltree[a].dis=ltree[r].dis+1;    return a;}int solve(int a,int b){	int tmp,ta,tb;	a=find(a);	b=find(b);	if(a==b) return -1;//	ltree[ltree[a].lt].fa=ltree[a].lt;//	ltree[ltree[a].rt].fa=ltree[a].rt;	ltree[a].val>>=1;	tmp=merge(ltree[a].lt,ltree[a].rt);	ltree[a].dis=ltree[a].lt=ltree[a].rt=0;    ta=merge(tmp,a);//	ltree[ltree[b].lt].fa=ltree[b].lt;//	ltree[ltree[b].rt].fa=ltree[b].rt;	ltree[b].val>>=1; 	tmp=merge(ltree[b].lt,ltree[b].rt);	ltree[b].dis=ltree[b].lt=ltree[b].rt=0;    tb=merge(tmp,b);        tmp=merge(ta,tb);    ltree[tmp].fa=ltree[ta].fa=ltree[tb].fa=tmp;    return ltree[tmp].val;}int main(){//795MS	3540K    while(~scanf("%d",&n)){	    for(int i=1;i<=n;++i){	        scanf("%d",&t);	        maketree(i,t);	    }//	    maketree(0,0);	    scanf("%d",&q);	    int c,d;	    for(int i=0;i<q;++i){	        scanf("%d%d",&c,&d);	        printf("%d/n",solve(c,d));	    }    }    return 0;    }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久免费精品| 日韩免费av在线| 亚洲精品午夜精品| 亚洲男女自偷自拍图片另类| 68精品国产免费久久久久久婷婷| 欧美激情中文网| 在线观看精品自拍私拍| 久久天天躁狠狠躁夜夜躁2014| 欧美怡红院视频一区二区三区| 国产亚洲精品久久久久久| 亚洲人成电影网| 最近2019年中文视频免费在线观看| 日韩在线免费av| 欧美激情在线一区| 九九久久综合网站| 国产精品久久一| 不卡av电影在线观看| 日韩电影免费在线观看中文字幕| 91精品国产色综合久久不卡98| 亚洲精品免费一区二区三区| 国产成人拍精品视频午夜网站| 国产精品免费视频xxxx| 亚洲欧美激情精品一区二区| 成人激情电影一区二区| 欧美黑人又粗大| 亚洲欧美三级在线| 伊人久久五月天| 精品国产鲁一鲁一区二区张丽| 国产精品久久av| 亚洲欧美国产日韩天堂区| 奇米成人av国产一区二区三区| 精品久久香蕉国产线看观看gif| 国产激情久久久| 国产日韩精品视频| 成人久久18免费网站图片| 97国产精品免费视频| 欧美激情免费观看| 午夜精品www| 亚洲人成在线一二| 麻豆国产精品va在线观看不卡| 色www亚洲国产张柏芝| 一区二区三区 在线观看视| 日韩中文在线中文网在线观看| 欧美成人h版在线观看| 国产区精品在线观看| 国产免费一区视频观看免费| 午夜精品一区二区三区在线播放| 午夜免费在线观看精品视频| 国产亚洲精品久久久优势| 国产一区二区在线播放| 欧美电影在线观看高清| 成人激情春色网| 亚洲视频网站在线观看| 亚洲电影免费在线观看| 亚洲男人的天堂在线播放| 国产精品视频久久久久| 日本久久久久久久久久久| 日韩成人在线播放| 91成人在线播放| 亚洲一区二区三区香蕉| 日韩精品视频在线观看免费| 国内伊人久久久久久网站视频| 影音先锋日韩有码| 国产成人精品a视频一区www| 久久久久久久久国产精品| 91国产视频在线| 日韩视频免费在线观看| 欧美乱人伦中文字幕在线| 欧美精品午夜视频| 午夜精品一区二区三区在线视| 日韩成人中文字幕在线观看| 亚洲女成人图区| 亚洲理论片在线观看| 国产精品久久久久久亚洲影视| www.亚洲免费视频| 亚洲丝袜在线视频| 国产suv精品一区二区| 国产精品免费视频久久久| 亚洲第一偷拍网| 日本国产高清不卡| 国产精品丝袜久久久久久高清| 亚洲自拍偷拍一区| 国产成人一区二区三区| 亚洲无线码在线一区观看| 日韩视频―中文字幕| 在线观看日韩www视频免费| 精品国产一区二区三区久久久| 7777kkkk成人观看| 久久久久久国产| 久久久久久久久久久免费精品| 亚洲三级 欧美三级| 午夜精品蜜臀一区二区三区免费| 日韩大片免费观看视频播放| 欧美激情按摩在线| 日韩最新在线视频| 日韩av一区在线观看| 国产精品女主播视频| 久久在线观看视频| 在线看国产精品| 久久99精品国产99久久6尤物| 成人黄色av免费在线观看| 欧美理论在线观看| 亚洲精品一区中文字幕乱码| 亚洲欧美另类中文字幕| 欧美电影免费观看大全| 亚洲一区二区三区视频| 久久久久久久一| 国产成人在线一区二区| 日韩精品高清在线观看| 欧美黑人一级爽快片淫片高清| 一区二区三区黄色| 少妇av一区二区三区| 国产精品视频不卡| 日韩av高清不卡| 亚洲直播在线一区| 精品国产31久久久久久| 91香蕉嫩草神马影院在线观看| 日韩欧美成人精品| 91精品国产高清| 一道本无吗dⅴd在线播放一区| 亚洲成色777777女色窝| 精品国产一区二区三区久久| 国产精品电影在线观看| 国产欧美久久一区二区| 欧美一级电影久久| 一本色道久久88综合亚洲精品ⅰ| 97在线日本国产| 欧美高清性猛交| 国产91露脸中文字幕在线| 91精品国产高清久久久久久| 欧美一级片在线播放| 国产偷亚洲偷欧美偷精品| 青青久久av北条麻妃黑人| 精品一区二区三区三区| 91热精品视频| 欧美成人免费观看| 久久精品电影一区二区| 91av视频在线免费观看| 国产a∨精品一区二区三区不卡| 欧美成人精品xxx| 久久久久久高潮国产精品视| 中文字幕精品www乱入免费视频| 亚洲精品一区中文字幕乱码| 欧美一级大胆视频| 欧美高清在线视频观看不卡| 国产成人精品久久二区二区| 欧美成人免费视频| 久久国产精品99国产精| 日韩av在线直播| 最近的2019中文字幕免费一页| 国产一区二区视频在线观看| 欧美老少配视频| 欧美大全免费观看电视剧大泉洋| 亚洲午夜国产成人av电影男同| 高清一区二区三区四区五区| 青青青国产精品一区二区| 欧美性感美女h网站在线观看免费| 亚洲理论在线a中文字幕| 中文字幕亚洲一区二区三区五十路| 日本韩国欧美精品大片卡二| 国产91热爆ts人妖在线| 日韩在线观看免费全集电视剧网站| 亚洲**2019国产| 欧美性高跟鞋xxxxhd|