bzoj 1455 可并堆+并查集
一个堆和一个并查集对应,并且满足并查集中所有没有死的人等于堆中的人
/**************************************************************
Problem: 1455
User: idy002
Language: C++
Result: Accepted
Time:2688 ms
Memory:32336 kb
****************************************************************/ #include <cstdio>
#define N 1000010 struct Node {
int u, w, s;
Node *ls, *rs;
void update() {
s = ;
if( ls ) s += ls->s;
if( rs ) s += rs->s;
}
}pool[N], *tail=pool, *root[N]; int n, m;
int fat[N], die[N]; int find( int a ) {
return a==fat[a] ? a : fat[a]=find(fat[a]);
}
Node *newnode( int u, int w ) {
Node *nd = ++tail;
nd->u = u;
nd->w = w;
nd->ls = nd->rs = ;
return nd;
}
Node *smerge( Node *na, Node *nb ) {
if( !na && !nb ) return ;
if( !na ) return nb;
if( !nb ) return na;
if( na->w < nb->w ) {
na->rs = smerge( na->rs, nb );
na->update();
return na;
} else {
nb->rs = smerge( nb->rs, na );
nb->update();
return nb;
}
}
int main() {
scanf( "%d", &n );
for( int i=,w; i<=n; i++ ) {
scanf( "%d", &w );
root[i] = newnode(i,w);
fat[i] = i;
}
scanf( "%d", &m );
for( int i=,u,v; i<=m; i++ ) {
char ch[];
scanf( "%s", ch );
if( ch[]=='M' ) {
scanf( "%d%d", &u, &v );
if( die[u] || die[v] ) continue;
int fu = find(u);
int fv = find(v);
if( fu==fv ) continue;
fat[fu] = fv;
root[fv] = smerge( root[fu], root[fv] );
} else {
scanf( "%d", &u );
if( die[u] ) {
printf( "0\n" );
continue;
}
int fu = find(u);
int v = root[fu]->u;
printf( "%d\n", root[fu]->w );
die[v] = true;
root[fu] = smerge( root[fu]->ls, root[fu]->rs );
}
}
}
bzoj 1455 可并堆+并查集的更多相关文章
- BZOJ.2054.疯狂的馒头(并查集)
BZOJ 倒序处理,就是并查集傻题了.. 并查集就是确定下一个未染色位置的,直接跳到那个位置染.然而我越想越麻烦=-= 以为有线性的做法,发现还是要并查集.. 数据随机线段树也能过去. //18400 ...
- 【bzoj1455】罗马游戏 可并堆+并查集
题目描述 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻.他决定玩这样 ...
- 2021.08.03 BZOJ 疯狂的馒头(并查集)
2021.08.03 BZOJ 疯狂的馒头(并查集) 疯狂的馒头 - 题目 - 黑暗爆炸OJ (darkbzoj.tk) 重点: 1.并查集的神奇运用 2.离线化 题意: 给一个长为n的序列,进行m次 ...
- BZOJ 4195: [Noi2015]程序自动分析 并查集+离散化
LUOGU 1955BZOJ 4195 题目描述 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量 ...
- BZOJ4699 树上的最短路(最短路径+dfs序+线段树+堆+并查集)
首先一般化的将下水道和塌陷看成一个东西.注意到在从源点出发的所有需要使用某条下水道的最短路径中,该下水道只会被使用一次,该下水道第一个被访问的点相同,且只会在第一个访问的点使用该下水道.这个第一个访问 ...
- bzoj 2936 [Poi 1999] 降水 - 并查集
题目传送门 需要root权限的传送门 题目大意 有一个$n\times m$的网格图,每一格都有一个高度.一次降雨过后问最多能积多少水. 考虑算每一高度能储存的水的量. 如果小于等于这个高度的格子和边 ...
- bzoj 2733 永无乡 - 并查集 - 线段树
永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达另一个岛. ...
- bzoj 1854 游戏 二分图匹配 || 并查集
题目链接 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的 ...
- 【BZOJ4382】[POI2015]Podział naszyjnika 堆+并查集+树状数组
[BZOJ4382][POI2015]Podział naszyjnika Description 长度为n的一串项链,每颗珠子是k种颜色之一. 第i颗与第i-1,i+1颗珠子相邻,第n颗与第1颗也相 ...
随机推荐
- Why do we make statistics so hard for our students?
Why do we make statistics so hard for our students? (Warning: long and slightly wonkish) If you’re l ...
- CentOS7 关闭防火墙和selinux
本文将简单介绍在CentOS7上如何临时和永久关闭防火墙和selinux. 关闭防火墙 # 查看防火墙状态 [root@localhost ~]# systemctl status firewalld ...
- 多源复制遇到CREATE USER FAILED错误
MySQL Multi-Source Replication enables a replication slave to receive transactions from multiple sou ...
- Python 入门基础11 --函数基础4 迭代器、生成器、枚举类型
今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ...
- requests(二): json请求中固定键名顺序&消除键和值之间的空格
继上一篇requests发送json请求的文章后,实际工作中遇到了以下2种情况. 1:服务端要求json字符串,键名的顺序固定 2.服务端对于接收到的json数据中,若key和value之间有空格, ...
- mybatis批量增加与删除——(十五)
1.首先应该明白,mybatis增删改返回值是int型的影响行数的值 mapper接口 package cn.xm.mapper; import java.util.List; import cn.x ...
- 标准linu休眠和唤醒机制分析(四)【转】
转自:http://blog.csdn.net/lizhiguo0532/article/details/6453552 suspend第三.四.五阶段:platform.processor.core ...
- 深度学习框架之TensorFlow的概念及安装(ubuntu下基于pip的安装,IDE为Pycharm)
2015年11月9日,Google发布人工智能系统TensorFlow并宣布开源. 1.TensorFlow的概念 TensorFlow 是使用数据流图进行数值计算的开源软件库.也就是说,Tensor ...
- 如何将同一个APP中的不同activity在Recent(最近任务)中显示?
需求描述 在应用Application1中存在A.B两个activity,当在应用启动了A.B activity,点击Recent键,如何让A.B两个activity都显示在Recent界面(最近任务 ...
- webRTC视频通话,https协议,录制端和播放端
最近做视频直播模块,在网上也看到很多大神写的代码,写的都不错,但不是我想要的,有的可能比较老,不支持https协议,有的又将直播端和显示端放在一个程序中,不利于我使用,则本篇着重添加了https协议( ...