BZOJ1455——罗马游戏
1、题目大意:维护一个数据结构,可以实现合并操作,还能询问最小值
2、分析:这种问题当然是可并堆啦
随便写了一个左偏树QAQ
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define M 1200000
struct merge_heap{
int l[M], r[M], d[M], value[M];
void init(){
memset(l, 0, sizeof(r));
memset(r, 0, sizeof(r));
memset(d, 1, sizeof(d));
}
int merge(int x, int y){
if(!x) return y;
if(!y) return x;
if(value[x] > value[y]) swap(x, y);
r[x] = merge(r[x], y);
if(d[l[x]] < d[r[x]]){
swap(l[x], r[x]);
}
d[x] = d[l[x]] + 1;
return x;
}
} wt;
int fa[M], tree[M], died[M];
int find(int x){
if(fa[x] == x) return x;
int k = find(fa[x]);
fa[x] = k;
return k;
}
int main(){
int n, m;
scanf("%d", &n);
wt.init();
for(int i = 1; i <= n; i ++){
scanf("%d", &wt.value[i]);
fa[i] = i;
tree[i] = i;
}
scanf("%d", &m);
char str[5];
int a, b;
for(int i = 1; i <= m; i ++){
scanf("%s", str);
if(str[0] == 'M'){
scanf("%d%d", &a, &b);
if(died[a] || died[b]) {
continue;
}
if(find(a) != find(b)){
int af = find(a), bf = find(b);
fa[af] = bf;
tree[bf] = wt.merge(tree[af], tree[bf]);
}
}
else{
scanf("%d", &a);
if(died[a]){
printf("0\n");
continue;
}
int af = find(a);
died[tree[af]] = 1;
printf("%d\n", wt.value[tree[af]]);
tree[af] = wt.merge(wt.l[tree[af]], wt.r[tree[af]]);
}
}
return 0;
}
BZOJ1455——罗马游戏的更多相关文章
- [bzoj1455]罗马游戏_左偏树_并查集
罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...
- [BZOJ1455]罗马游戏 左偏树+并查集
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 2285 Solved: 994[Submit][Status][Discuss] ...
- Bzoj1455 罗马游戏
Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1622 Solved: 679 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人 ...
- 【数据结构】bzoj1455罗马游戏
Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻 ...
- bzoj1455: 罗马游戏 + bzoj2809: Dispatching(可并堆)
昨天看了可并堆是什么,写的是左偏树 大概就是一棵树 1.有左偏性质,即当前根到左叶子节点距离比到右叶子节点距离大 2.有堆性质,堆顶关键字比子树关键字小 合并两个堆的时候,关键字大的插入到关键字小的那 ...
- BZOJ1455 罗马游戏 左偏树 可并堆
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1455 题意概括 n个人,2种操作. 一种是合并两个人团,一种是杀死某一个人团的最弱的人. 题解 左 ...
- [BZOJ1455]罗马游戏(左偏树)
用并查集和左偏树维护士兵的关系 Code #include <cstdio> #include <algorithm> #define N 1000010 using name ...
- BZOJ1455罗马游戏
左偏树裸题. 题面描述让人意识到了平面几何的重要性. //Achen #include<algorithm> #include<iostream> #include<cs ...
- 【BZOJ1455】罗马游戏(左偏树)
[BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...
随机推荐
- SQL Server编程(04)基本语法【转载】
一.定义变量 --简单赋值 declare @a int set @a=5 print @a --使用select语句赋值 declare @user1 nvarchar(50) select @ ...
- ASP.NET程序单客户端(浏览器)登录的实现方案
需求描述:当用户的账户在另一个浏览器中登录的时候,需要把当前浏览器的登录强制下线.这种需求在业务系统,或付费视频服务网站中比较常见. 这种需求我称之为"单客户端(浏览器)"登录,与 ...
- js012-DO2和DOM3
js012-DO2和DOM3 本章内容: DOM2和DOM3的变化 操作样式的ODM API DOM 遍历与范围 DOM2级核心:在一级核心基础上构建,为节点添加了更多方法和属性 DOM2级视图:为文 ...
- SQL查询效率:100w数据查询只需要1秒钟
G os: windows 数据库: ms sql server 目的: 查询性能测试,比较两种查询的性能 SQL查询效率 step by step -- setp . -- 建表 create ta ...
- MySQL学习笔记——约束
1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性. 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除. 3.大部分数据库支持下面五类完整性约束: - NOT NULL非空 ...
- eshop截取字符串长度 和去掉省略号
<!-- {if $goods.goods_brief} --> {$goods.goods_brief|truncate:17}<!-- {/if} --> 去掉省略号: 找 ...
- HTML5 Web Form 新增属性和表单验证
<form>标签的基本属性 method属性:指定浏览器向服务器传送数据的方式,可选: action属性:设置服务器接受和处理表单数据的URL: enctype属性:制定表单数据在发送到服 ...
- 正则匹配IP
分析 IP地址的长度为32位,分为4段,每段8位,用十进制数字表示,每段数字范围为0~255( 2^8 ),段与段之间用英文句点“.”隔开.例如:某台计算机IP地址为10.11.44.100. IP地 ...
- Bitcask 存储模型
Bitcask 存储模型 Bitcask 是一个日志型.基于hash表结构的key-value存储模型,以Bitcask为存储模型的K-V系统有 Riak和 beansdb新版本. 日志型数据存储 何 ...
- 注入问题0x00
1.sqlmap遇到MySQL注入可以成功getshell,但是,遇到sqlserver注入未成功getshell. 2.xp_cmdshell 如何 getshell(1433未对外开放). 解决方 ...