【题目大意】

给出一些数和一些操作。M:合并两个数所在的集合,如果有任意一个数被删除则忽略操作;K:删除某个数所在集合中最小的数。

【思路】

裸裸的,复习^ ^

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=+;
struct node
{
int key,dis,del;
int lson,rson,father;
}ltree[MAXN];
int n,m; int find(int a)
{
while (ltree[a].father!=a) a=ltree[a].father;
return a;
} void build(int rt,int val)
{
ltree[rt].key=val;
ltree[rt].dis=(rt==)?-:;
ltree[rt].del=;
ltree[rt].lson=ltree[rt].rson=;
ltree[rt].father=rt;
} int merge(int x,int y)
{
if (x==||y==) return (x|y);
if (ltree[x].key>ltree[y].key) swap(x,y);
ltree[x].rson=merge(ltree[x].rson,y);
int &l=ltree[x].lson,&r=ltree[x].rson;
ltree[l].father=ltree[r].father=x;
if (ltree[l].dis<ltree[r].dis) swap(l,r);
if (r==) ltree[x].dis=;
else ltree[x].dis=ltree[r].dis+;
return x;
} void Del(int rt)
{
int l=ltree[rt].lson,r=ltree[rt].rson;
ltree[l].father=l;
ltree[r].father=r;
ltree[rt].dis=ltree[rt].lson=ltree[rt].rson=;
ltree[rt].del=;
merge(l,r);
} void init()
{
scanf("%d",&n);
for (int i=;i<=n;i++)
{
int score;
scanf("%d",&score);
build(i,score);
}
build(,);
} void solve()
{
scanf("%d",&m);
for (int i=;i<m;i++)
{
char op[];
scanf("%s",op);
if (op[]=='M')
{
int a,b;
scanf("%d%d",&a,&b);
if (!ltree[a].del&&!ltree[b].del)
{
int fa=find(a),fb=find(b);
if (fa!=fb) merge(fa,fb);//不要忘记要判断两者不在同一个集合中
}
}
if (op[]=='K')
{
int a;
scanf("%d",&a);
if (ltree[a].del) puts("");
else
{
int fa=find(a);
printf("%d\n",ltree[fa].key);
Del(fa);
}
}
}
} int main()
{
init();
solve();
return ;
}

【裸裸的左偏树】BZOJ1455-罗马游戏的更多相关文章

  1. 【bzoj1455】【罗马游戏】左偏树+并查集(模板)

    Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻 ...

  2. 【BZOJ-1455】罗马游戏 可并堆 (左偏树)

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1355  Solved: 561[Submit][Status][Discuss] ...

  3. BZOJ1455 罗马游戏 左偏树 可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1455 题意概括 n个人,2种操作. 一种是合并两个人团,一种是杀死某一个人团的最弱的人. 题解 左 ...

  4. 【BZOJ1455】罗马游戏(左偏树)

    [BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...

  5. [bzoj1455]罗马游戏_左偏树_并查集

    罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...

  6. [BZOJ1455]罗马游戏(左偏树)

    用并查集和左偏树维护士兵的关系 Code #include <cstdio> #include <algorithm> #define N 1000010 using name ...

  7. 【BZOJ 1455】 1455: 罗马游戏 (可并堆-左偏树+并查集)

    1455: 罗马游戏 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那 ...

  8. BZOJ 1455 罗马游戏 左偏树

    题目大意:给定n个点,每一个点有一个权值,提供两种操作: 1.将两个点所在集合合并 2.将一个点所在集合的最小的点删除并输出权值 非常裸的可并堆 n<=100W 启示式合并不用想了 左偏树就是快 ...

  9. bzoj 1455: 罗马游戏 左偏树+并查集

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 668  Solved: 247[Submit][Status] Descriptio ...

  10. 1455: 罗马游戏[左偏树or可并堆]

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1861  Solved: 798[Submit][Status][Discuss] ...

随机推荐

  1. CodeForces - 999C

    You are given a string ss consisting of nn lowercase Latin letters. Polycarp wants to remove exactly ...

  2. 【译】Linux提权基础

    英文原文: Basic Linux Privilege Escalation 在开始之前,我想指出 - 我不是专家. 据我所知,在这个巨大的领域没有一个“魔法”的答案. 这只是我的发现,写出来,共享而 ...

  3. LintCode题解之子树

    思路: 最简单的方法,依次遍历比较就可以了. AC代码: /** * Definition of TreeNode: * public class TreeNode { * public int va ...

  4. CF148A Insomnia cure

    公主睡前数龙, 每隔k, l, m, n只都会用不同的技能攻击龙. 假定共数了d只龙, 问共有多少龙被攻击了. 思路: 用一个visit数组记录被攻击过的dragon, 最后遍历visit数组统计被攻 ...

  5. caffe Python API 之Accuracy

    net.acc = caffe.layers.Accuracy(net.fc3,net.label) 输出: layer { name: "acc" type: "Acc ...

  6. [写出来才有价值系列:node.js]node.js 01-介绍及安装

    对于Node.js在百度百科上是这样解释的: Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度 ...

  7. 在Ubuntu上安装搜狗输入法

    1.进入搜狗输入法官网 2.下载Linux版本,选择64bit 下载 3.等待下载的同时,进行系统配置 进入系统设置->语言支持->进行更新(需要输入登录密码)->在键盘输入法系统选 ...

  8. python模块之itertools

    在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器 ...

  9. java并发容器

    同步容器将所有对容器状态的访问都串行化,以实现线程安全性.这种方式的缺点是严重降低并发性.Java 5.0提供了多种并发容器来改进同步容器的性能.如ConcurrentHashMap代替同步且基于散列 ...

  10. 浅谈Java中的hashcode方法(转)

    原文链接:http://www.cnblogs.com/dolphin0520/p/3681042.html 浅谈Java中的hashcode方法 哈希表这个数据结构想必大多数人都不陌生,而且在很多地 ...