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 ...
随机推荐
- 分析setting源代码获取sd卡大小
分析setting源代码获取sd卡大小 android系统有一个特点,即开源,我们可以得到任何一个应用的源代码,比如我们不知道这样的android代码怎么写,我们可以打开模拟器里面的设置(settin ...
- js002-在HTML中使用JavaScript
js002-在HTML中使用JavaScript 2.1 <script>元素 定义了以下6个属性 async: 可选.表示应该立即下载脚本,但不妨碍页面中的 ...
- 闭包->类的实例数组排序
简单的字符串数组排序就一句话 Arr.sort(function(s1,s2){return s1.localeCompare(s2));//升序 Arr.sort(function(s1,s2){r ...
- JavaScript学习笔记——事件
javascript事件基础和事件绑定 一.事件驱动 1.事件 javascript侦测到的用户的操作或是页面的一些行为(怎么发生的) 2.事件源 引发事件的元素.(发生在谁的身上)3.事件处理程序 ...
- (转)Java字符串
转自:http://blog.sina.com.cn/s/blog_899678b90101brz0.html 创建字符串有两种方式:两种内存区域(字符串池,堆)1," " 引号创 ...
- Hive部署
前置环境:CentOS 6.5 + JDK 1.7 + Hadoop 2.6 注:此处采用伪分布安装Hadoop,平时测试使用,Hive的元数据信息使用MySQL存储 一.安装MySQL 1.检查是否 ...
- Senparc.Weixin.MP.Sample 配置redis服务器密码
redis.windows-service.conf中加 requirepass 你的密码 <!-- Cache.Redis连接配置 --> <add key="Cach ...
- Python Web Crawler
Python版本:3.5.2 pycharm URL Parsing¶ https://docs.python.org/3.5/library/urllib.parse.html?highlight= ...
- 整理一下Entity Framework的查询
整理一下Entity Framework的查询 2012-08-30 13:41:59 标签:Entity Framework 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信 ...
- 参数化查询为什么能够防止SQL注入
原文地址: http://www.cnblogs.com/LoveJenny/archive/2013/01/15/2860553.html http://zhangxugg-163-com.itey ...