左偏树。我是ziliuziliu,我是最强的

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. #define maxn 100500
  7. using namespace std;
  8. int root[maxn],ls[maxn],rs[maxn],val[maxn],father[maxn],n,m;
  9. int x,y,dis[maxn];
  10. int find(int x)
  11. {
  12. if (x!=father[x])
  13. father[x]=find(father[x]);
  14. return father[x];
  15. }
  16. int merge(int x,int y)
  17. {
  18. if (x==) return y;
  19. else if (y==) return x;
  20. if (val[x]<val[y]) swap(x,y);
  21. rs[x]=merge(rs[x],y);
  22. father[rs[x]]=x;
  23. if (dis[ls[x]]<dis[rs[x]]) swap(ls[x],rs[x]);
  24. if (rs[x]==) dis[x]=;
  25. else dis[x]=dis[rs[x]]+;
  26. return x;
  27. }
  28. int pop(int x)
  29. {
  30. father[x]=x;
  31. father[ls[x]]=ls[x];
  32. father[rs[x]]=rs[x];
  33. int regis=merge(ls[x],rs[x]);
  34. ls[x]=rs[x]=dis[x]=;
  35. return regis;
  36. }
  37. int main()
  38. {
  39. while (scanf("%d",&n)!=EOF)
  40. {
  41. memset(ls,,sizeof(ls));
  42. memset(rs,,sizeof(rs));
  43. dis[]=-;
  44. for (int i=;i<=n;i++)
  45. {
  46. scanf("%d",&val[i]);
  47. father[i]=i;
  48. root[i]=i;
  49. }
  50. scanf("%d",&m);
  51. for (int i=;i<=m;i++)
  52. {
  53. scanf("%d%d",&x,&y);
  54. int pa,pb;
  55. pa=find(x),pb=find(y);
  56. if (pa==pb) printf("-1\n");
  57. else
  58. {
  59. val[pa]/=;val[pb]/=;
  60. int nn1,nn2;
  61. nn1=pop(pa);nn2=pop(pb);
  62. nn1=merge(nn1,pa);
  63. nn1=merge(nn1,pb);
  64. nn1=merge(nn1,nn2);
  65. printf("%d\n",val[find(pa)]);
  66. }
  67. }
  68. }
  69. return ;
  70. }

HDU 1512 Monkey King的更多相关文章

  1. hdu 1512 Monkey King 左偏树

    题目链接:HDU - 1512 Once in a forest, there lived N aggressive monkeys. At the beginning, they each does ...

  2. 数据结构(左偏树):HDU 1512 Monkey King

    Monkey King Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  3. HDU 1512 Monkey King(左偏树+并查集)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1512 [题目大意] 现在有 一群互不认识的猴子,每个猴子有一个能力值,每次选择两个猴子,挑出他们所 ...

  4. HDU 1512 Monkey King(左偏树模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=1512 题意: 有n只猴子,每只猴子一开始有个力量值,并且互相不认识,现有每次有两只猴子要决斗,如果认识,就不打了 ...

  5. hdu 1512 Monkey King —— 左偏树

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1512 很简单的左偏树: 但突然对 rt 的关系感到混乱,改了半天才弄对: 注意是多组数据! #includ ...

  6. HDU 1512 Monkey King(左偏树)

    Description Once in a forest, there lived N aggressive monkeys. At the beginning, they each does thi ...

  7. HDU 1512 Monkey King ——左偏树

    [题目分析] 也是堆+并查集. 比起BZOJ 1455 来说,只是合并的方式麻烦了一点. WA了一天才看到是多组数据. 盲人OI (- ̄▽ ̄)- Best OI. 代码自带大常数,比启发式合并都慢 [ ...

  8. HDU 1512 Monkey King (左偏树+并查集)

    题意:在一个森林里住着N(N<=10000)只猴子.在一开始,他们是互不认识的.但是随着时间的推移,猴子们少不了争斗,但那只会发生在互不认识 (认识具有传递性)的两只猴子之间.争斗时,两只猴子都 ...

  9. ZOJ 2334 HDU 1512 Monkey King

    题意: 猴子们打架  认识的猴子不会打架  两仅仅猴子打完以后就认识了  A认识B B认识C A也认识C  每次打架由两伙猴子进行  分别选出自己的最高战斗力  在战斗之后两仅仅猴子战斗力减半  给出 ...

随机推荐

  1. ZJU 1180 Self Numbers(暴力模拟判断,水题)

    题目链接 同HDU 1128 , POJ 1316(这个范围小一点). 原本怕超时,以为有技巧或者规律,死命的想,后来发现这就是一道水体,模拟着全部判断一下就好了,10秒呢,完全不怕超时...唔,废话 ...

  2. POJ 3243 Clever Y (求解高次同余方程A^x=B(mod C) Baby Step Giant Step算法)

    不理解Baby Step Giant Step算法,请戳: http://www.cnblogs.com/chenxiwenruo/p/3554885.html #include <iostre ...

  3. Android ListVIew 详解(一)

    在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子,如下图. 列表的显示需要三 ...

  4. 取得DisplayMerics手机屏幕大小的应用

    DisplayMerics:A structure describing general information about a display, such as its size, density, ...

  5. MyEclipse编码设置

    (1)windows---->Preferences (2)general---->Workspace (3)设置编码

  6. [转载] ACE 组播校验和出错问题解决

    源地址:http://yuanmuqiuyu2000.blog.sohu.com/140904942.html 使用ACE框架写了个组播简单的测试工具,但是测试过程中,总是发现udp校验和出错的信息. ...

  7. 浅谈Spark Kryo serialization

    原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3833985.html 最近在使用spark开发过程中发现当数据量很大时,如果cache数据将消耗很多的内 ...

  8. 李洪强iOS经典面试题12

     1.说说响应链 答: 事件响应链.包括点击事件,画面刷新事件等.在视图栈内从上至下,或者从下之上传播. 可以说点事件的分发,传递以及处理.具体可以去看下touch事件这块.因为问的太抽象化了 严重怀 ...

  9. Linux 与 CONE NAT 和 Symmetric NAT

    http://alexanderlaw.blog.hexun.com/31883661_d.html 1. NAT 的划分 RFC3489 中将 NAT 的实现分为四大类: 1. Full Cone ...

  10. DXT纹理压缩

    转:http://blog.csdn.net/lhc717/article/details/6802951 我们知道游戏中对于3D物体表面细节的表现最重要的还是靠贴图来实现的,那么越是高分辨率越是真彩 ...