【裸裸的左偏树】BZOJ1455-罗马游戏
【题目大意】
给出一些数和一些操作。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-罗马游戏的更多相关文章
- 【bzoj1455】【罗马游戏】左偏树+并查集(模板)
Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻 ...
- 【BZOJ-1455】罗马游戏 可并堆 (左偏树)
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1355 Solved: 561[Submit][Status][Discuss] ...
- BZOJ1455 罗马游戏 左偏树 可并堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1455 题意概括 n个人,2种操作. 一种是合并两个人团,一种是杀死某一个人团的最弱的人. 题解 左 ...
- 【BZOJ1455】罗马游戏(左偏树)
[BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...
- [bzoj1455]罗马游戏_左偏树_并查集
罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...
- [BZOJ1455]罗马游戏(左偏树)
用并查集和左偏树维护士兵的关系 Code #include <cstdio> #include <algorithm> #define N 1000010 using name ...
- 【BZOJ 1455】 1455: 罗马游戏 (可并堆-左偏树+并查集)
1455: 罗马游戏 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那 ...
- BZOJ 1455 罗马游戏 左偏树
题目大意:给定n个点,每一个点有一个权值,提供两种操作: 1.将两个点所在集合合并 2.将一个点所在集合的最小的点删除并输出权值 非常裸的可并堆 n<=100W 启示式合并不用想了 左偏树就是快 ...
- bzoj 1455: 罗马游戏 左偏树+并查集
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 668 Solved: 247[Submit][Status] Descriptio ...
- 1455: 罗马游戏[左偏树or可并堆]
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1861 Solved: 798[Submit][Status][Discuss] ...
随机推荐
- 2017ACM暑期多校联合训练 - Team 4 1004 HDU 6070 Dirt Ratio (线段树)
题目链接 Problem Description In ACM/ICPC contest, the ''Dirt Ratio'' of a team is calculated in the foll ...
- 72.Edit Distance---dp
题目链接:https://leetcode.com/problems/edit-distance/description/ 题目大意:找出两个字符串之间的编辑距离(每次变化都只消耗一步). 法一(借鉴 ...
- $fhqTreap$
- $fhqTreap$与$Treap$的差异 $fhqTreap$是$Treap$的非旋版本,可以实现一切$Treap$操作,及区间操作和可持久化 $fhqTreap$非旋关键在于分裂与合并$(Sp ...
- Spring Boot学习——单元测试
本随笔记录使用Spring Boot进行单元测试,主要是Service和API(Controller)进行单元测试. 一.Service单元测试 选择要测试的service类的方法,使用idea自动创 ...
- socket.io插件调用的demo
1.利用socket.io插件制作一个聊天框,原理是输入对话,发送到服务,服务器在返回相应的对话,最后插入页面中,时间对话的功能,这里我是使用的node.js搭建的服务器. 附上源码 <!DOC ...
- python redis-string、list、set操作
string操作 redis中的string在内存中都是按照一个key对应一个value来存储的 方法: set() 方法 : 写入一条数据 mset() 方法: 写入多条数据 , 可是Key-Val ...
- java基础8 构造函数和构造代码块
一.构造函数 1 构造函数的作用 给对应的对象进行初始化. 2 构造函数的格式 修饰符 函数名(形式参数){ //函数名就是类名 函数体 } 举例说明: class Perosn{ private i ...
- 系统日志查看logrotate 工具
logrotate是作为linux系统日志的管理工具存在.他可以轮换,压缩,邮件系统日志文件. 默认的logrotate被加入cron的/etc/cron.daily中作为每日任务执行./etc/lo ...
- MySQL-事务特性
1. 事务概念引入: 现实生活中,我们往往经常会进行转账操作,转账操作可以分为两部分来完成,转入和转出.只有这两部分都完成了才可以认为是转账成功.在数据库中,这个过程是使用两条语句来完成的,如果其中任 ...
- Linux 用户篇——用户管理的配置文件
一.用户管理之配置文件的重要性 在Linux系统中,用户账户的相关信息是存放在相关配置文件中.而Linux安全系统的核心是用户账号,用户对系统中各种对象的访问权限取决于他们登录系统时用的账户,并且Li ...