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

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

hdu 1512 左偏樹

2019-11-11 04:27:15
字體:
來源:轉載
供稿:網友

題目:

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| 亚洲男人7777| 欧美在线xxx| 一区二区欧美亚洲| 欧美色道久久88综合亚洲精品| 国产成人精品久久亚洲高清不卡| 成人精品一区二区三区电影黑人| 91精品国产九九九久久久亚洲| 亚洲乱码一区av黑人高潮| 1769国内精品视频在线播放| 欧洲成人午夜免费大片| 久久精品成人欧美大片| 国产亚洲激情视频在线| 国产精品视频最多的网站| 亚洲精品福利免费在线观看| 大荫蒂欧美视频另类xxxx| 亚洲国产一区二区三区在线观看| 最近中文字幕2019免费| 欧美专区第一页| 欧美电影电视剧在线观看| 韩国v欧美v日本v亚洲| 成人网欧美在线视频| 精品中文字幕在线观看| 日韩av片免费在线观看| 国产一区二区三区毛片| 国产精品国产自产拍高清av水多| 78m国产成人精品视频| 亚洲无线码在线一区观看| 欧美性精品220| 欧美综合国产精品久久丁香| 久久电影一区二区| 亚洲自拍小视频免费观看| 国产成人精品综合久久久| 高跟丝袜一区二区三区| 国内精品免费午夜毛片| 欧美性猛交xxxx乱大交3| 欧美高清视频在线| 伊人久久久久久久久久| 亚洲一区二区在线| 视频在线观看99| 久久中文字幕国产| 日韩欧美a级成人黄色| 亚洲国产美女久久久久| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久久久中文| 亚洲一级黄色av| 992tv成人免费视频| 亚洲欧美另类自拍| 精品无码久久久久久国产| 久久99久久99精品中文字幕| 456国产精品| 国产精品高潮粉嫩av| 国产精品欧美一区二区三区奶水| 欧美夫妻性生活视频| 一本色道久久88综合日韩精品| 日韩精品在线免费观看| 亚洲精品不卡在线| 91麻豆桃色免费看| 日韩av手机在线看| 国内揄拍国内精品少妇国语| 一区二区三区 在线观看视| 精品中文字幕在线2019| 欧美激情乱人伦一区| 国产在线播放不卡| 欧美日韩国产精品一区| 亚洲免费中文字幕| 久久精品视频免费播放| 亚洲午夜未满十八勿入免费观看全集| 尤物yw午夜国产精品视频明星| 国产精品9999| 亚洲精品大尺度| 中文字幕精品一区二区精品| 欧美精品一区在线播放| 精品久久久香蕉免费精品视频| 久久免费精品日本久久中文字幕| 久久久久成人精品| 搡老女人一区二区三区视频tv| 激情成人在线视频| 精品在线观看国产| 亚洲区一区二区| 亚洲深夜福利在线| 国产精品一二区| 久久在线观看视频| 综合国产在线观看| 最近2019中文免费高清视频观看www99| 日韩一中文字幕| 亚洲最大av在线| 久久国产精品视频| 中文综合在线观看| 日韩欧中文字幕| 日本精品免费一区二区三区| 中文字幕日韩在线播放| 欧美在线国产精品| 91精品视频在线看| 欧美黑人性猛交| 日韩av免费在线观看| 精品成人乱色一区二区| 色噜噜久久综合伊人一本| 中文字幕一区二区三区电影| 午夜精品久久久久久99热| 中文字幕亚洲一区在线观看| 97成人精品视频在线观看| 日韩久久免费视频| 日韩在线视频二区| 欧美激情一区二区三区成人| 国产精品一区二区三区久久久| 国产精品久久久精品| 亚洲色图偷窥自拍| 日韩乱码在线视频| 欧美日韩精品在线视频| 亚洲午夜精品久久久久久久久久久久| 国产日本欧美一区| 国产精品一区二区三区免费视频| 久久久久久久91| 国产精品久久国产精品99gif| 欧美乱人伦中文字幕在线| 韩日欧美一区二区| 大伊人狠狠躁夜夜躁av一区| 精品自在线视频| 亚洲欧美日韩精品久久亚洲区| 日韩av一区在线观看| 国产精品久久久久久久久免费| 国产成人福利夜色影视| 亚洲深夜福利网站| 国产精品夫妻激情| 5252色成人免费视频| 久久久中精品2020中文| 成人欧美一区二区三区黑人| 欧美成人午夜影院| 日韩一二三在线视频播| 欧美日韩成人网| 国产精品96久久久久久又黄又硬| 综合网日日天干夜夜久久| 欧美精品激情blacked18| 日韩中文字幕在线观看| 欧美性感美女h网站在线观看免费| 久久福利网址导航| 亚洲最大福利视频| 日韩av在线免费观看一区| 韩国美女主播一区| 日韩成人在线免费观看| 久久久久久91| 国产日韩欧美在线观看| 久久久久久午夜| 日韩av网址在线| 久久成人这里只有精品| 美女扒开尿口让男人操亚洲视频网站| 日韩欧美一区二区在线| 亚洲欧美日韩爽爽影院| 91视频免费网站| 中文字幕国产精品久久| 久久在线精品视频| 青青草成人在线| 亚洲综合精品一区二区| 国产精品九九久久久久久久| 91精品国产91久久久久福利| 中文字幕日韩在线视频| 国产精品久久久久久久9999| 成人97在线观看视频| 国产在线a不卡| 国产69精品久久久| 日韩免费观看在线观看| 丝袜美腿亚洲一区二区|