zoj2334 Monkey King , 并查集,可并堆,左偏树
提交地址:点击打开链接
题意: N(N<=10^5)仅仅猴子,初始每仅仅猴子为自己猴群的猴王。每仅仅猴子有一个初始的力量值。这些猴子会有M次会面。
每次两仅仅猴子x,y会面,若x,y属于同一个猴群输出-1,否则将x,y所在猴群的猴王的力量值减半,然后合并这两个猴群。
新猴群中力量值最高的为猴王。
输出新猴王的力量值。
分析:涉及集合的查询,合并,取最值。 利用并查集和左偏树就可以解决。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; const int maxn = 200000;
int tot, v[maxn], l[maxn], r[maxn], d[maxn], f[maxn];
int findset(int x)
{return f[x]==x?x:f[x]=findset(f[x]);}
int Merge(int x, int y)
{
if(!x) return y;
if(!y) return x;
if(v[x] < v[y]) swap(x, y); //大顶堆
r[x] = Merge(r[x], y); //递归合并右子树和Y
f[r[x]] = x; //更新T右子树的根
if(d[l[x]] < d[r[x]]) //维护堆性质
swap(l[x], r[x]);
d[x] = d[ r[x] ] + 1;
return x;
}
int Init(int x)
{
tot++;
v[tot] = x;
f[tot] = tot;
l[tot] = r[tot] = d[tot] = 0;
}
int Insert(int x, int y)
{
return Merge(x, Init(y));
}
int Top(int x)
{
return v[x];
}
int Pop(int x)
{
int L = l[x], R = r[x];
f[L] = L;
f[R] = R;
v[x] /= 2;
r[x] = l[x] = d[x] = 0;
return Merge(L, R);
}
void solve(int x, int y)
{
int left = Pop(x), right = Pop(y);
left = Merge(left, x);
right = Merge(right, y);
left = Merge(left, right);
printf("%d\n", Top(left));
}
int main()
{
int n, m, i, x, y;
while(~scanf("%d", &n))
{
tot = 0;
for(i=1; i<=n; ++i)
{
scanf("%d",&x);
Init(x);
}
scanf("%d", &m);
for(i=1; i<=m; ++i)
{
scanf("%d%d", &x, &y);
int fx = findset(x), fy = findset(y);
if(fx==fy)
{
printf("-1\n");
}
else
{
solve(fx, fy);
}
}
}
return 0;
}
/*
5
20
16
10
10
4
5
2 3
3 4 8
5
5
-1
10
*/
zoj2334 Monkey King , 并查集,可并堆,左偏树的更多相关文章
- ZOJ2334 Monkey King 并查集 STL
题意:两家原始人(猴)打交道后成为一家猴,打交道时两家分别派出最帅的两位猴子,颜值各自减半,问每次打交道后新家族最帅的猴子的颜值.当然,已经是一家子就没有必要打交道了,因为没有猴希望颜值降低,毕竟还得 ...
- 【BZOJ 1455】 1455: 罗马游戏 (可并堆-左偏树+并查集)
1455: 罗马游戏 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那 ...
- 洛谷 - P1552 - 派遣 - 左偏树 - 并查集
首先把这个树建出来,然后每一次操作,只能选中一棵子树.对于树根,他的领导力水平是确定的,然后他更新答案的情况就是把他子树内薪水最少的若干个弄出来. 问题在于怎么知道一棵子树内薪水最少的若干个分别是谁. ...
- zoj 2334 Monkey King/左偏树+并查集
原题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1389 大致题意:N只相互不认识的猴子(每只猴子有一个战斗力值) 两只 ...
- HDU 1512 Monkey King(左偏树+并查集)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1512 [题目大意] 现在有 一群互不认识的猴子,每个猴子有一个能力值,每次选择两个猴子,挑出他们所 ...
- HDU 1512 Monkey King (左偏树+并查集)
题意:在一个森林里住着N(N<=10000)只猴子.在一开始,他们是互不认识的.但是随着时间的推移,猴子们少不了争斗,但那只会发生在互不认识 (认识具有传递性)的两只猴子之间.争斗时,两只猴子都 ...
- ZOJ2334 Monkey King 左偏树
ZOJ2334 用左偏树实现优先队列最大的好处就是两个队列合并可以在Logn时间内完成 用来维护优先队列森林非常好用. 左偏树代码的核心也是两棵树的合并! 代码有些细节需要注意. #include&l ...
- HDU1512 ZOJ2334 Monkey King 左偏树
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - ZOJ2334 题目传送门 - HDU1512 题意概括 在一个森林里住着N(N<=10000)只猴子. ...
- Monkey King(左偏树 可并堆)
我们知道如果要我们给一个序列排序,按照某种大小顺序关系,我们很容易想到优先队列,的确很方便,但是优先队列也有解决不了的问题,当题目要求你把两个优先队列合并的时候,这就实现不了了 优先队列只有插入 删除 ...
随机推荐
- Archlinux系统配置学习笔记(一)
本文档是有关Archlinux系统配置的学习笔记,参考和学习的是Archlinux官方网站上的相应文档:General Recommendations. 这里的配置主要是针对按照官方网站上的文档刚刚完 ...
- DedeCMS常见问题和技巧
1: dedecms 访问空白(织梦如何显示详细错误) 我们在使用织梦的时候,有的时候会遇到访问空白的情况,尤其是再刚刚搬家之后,织梦会出现访问空白或者返给您一个500的友好界面错误,遇到这种情况该怎 ...
- .NetCore生产环境下构建Consul(单个DC数据中心)的服务器健康检查
下载最新的consul程序 consul 启动方式有两种 server 和client 默认是client 如果你不需要记录数据可以用 consul agent -dev 来启动 consul age ...
- 浙江省“一卡通”异地就医,C#调用省一卡通动态库
前言,最近学习调用 浙江省一卡通业务,主要就是调用一个DLL,动态库文件,这个动态库是浙大网新研发的. 借着自学的机会把心得体会都记录下来,方便感兴趣的小伙伴学习与讨论. 内容均系原创,欢迎大家转载分 ...
- Vue常用模板语法
常用模板语法 本篇将在上一篇的基础上记录文本渲染.表达式.过滤器以及常用指令的简单用法. 一.文本渲染 Vue支持动态渲染文本,即在修改属性的同时,实时渲染文本内容.同时为了提高渲染效率,也支持只 ...
- Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\User given,
使用laravel内置的注册认证系统,注册账号,提示如下错误.Google之后,发现github的一个答案,解决了.分享一下 Argument 1 passed to Illuminate\Auth\ ...
- form的智能表单
1.智能表单的介绍 其中,(1)中的使用格式使得form不会太臃肿. 2.使用规范 3.新属性 4.举例 二.程序 1.关于邮件的问题 <!DOCTYPE html> <head&g ...
- Ubuntu服务器的anaconda环境修复办法(自动进入base环境怎么办?)
某天在服务器上更新了conda的版本,不知怎么回事我的python3.6就变成python2.7了,而且一进入服务器就会自动进入base环境(我的conda只装了base环境) 仔细研究了半天,才发现 ...
- UG中STP203和STP214的区别
UG转档STP203,STP214的区别:STP214转出的图档将保留原图属性,例如所在图层,曲面颜色,装配组件名称等.STP203没有上述功能.
- jquery 下拉列表选择值
选择下拉列表值样例方式 $("#updateAppName").get(0).selectedIndex = 0; $("#updateAppName").ge ...