【BZOJ1455】罗马游戏
【题目链接】
- 点击打开链接
【思路要点】
- 可并堆模板题。
【代码】
#include<bits/stdc++.h> using namespace std; #define MAXN 1000005 struct Node {int father, value;int child[2], depth[2]; }; int n, m; Node a[MAXN]; bool killed[MAXN]; int merge(int x, int y) {if (x == 0) return y;if (y == 0) return x;if (a[x].value > a[y].value) swap(x, y);a[x].child[1] = merge(a[x].child[1], y);a[a[x].child[1]].father = x;a[x].depth[1] = 1 + max(a[a[x].child[1]].depth[0], a[a[x].child[1]].depth[1]);if (a[x].depth[1] > a[x].depth[0]) {swap(a[x].child[0], a[x].child[1]);swap(a[x].depth[0], a[x].depth[1]);}return x; } int root(int x) {if (a[x].father == 0) return x;else return root(a[x].father); } int main() {scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%d", &a[i].value);scanf("%d", &m);for (int i = 1; i <= m; i++) {char opt;scanf("\n%c", &opt);if (opt == 'M') {int x, y;scanf("%d%d", &x, &y);if (killed[x] || killed[y]) continue;int tmp = root(x), tnp = root(y);if (tmp == tnp) continue;else merge(tmp, tnp);} else {int x;scanf("%d", &x);if (killed[x]) {printf("0\n");continue;}int tmp = root(x);printf("%d\n", a[tmp].value);killed[tmp] = true;a[merge(a[tmp].child[0], a[tmp].child[1])].father = 0;}}return 0; }
【BZOJ1455】罗马游戏相关推荐
- bzoj1455罗马游戏*
bzoj1455罗马游戏 题意: 维护数据结构支持合并和弹出最小值.n≤1000000,m≤100000 题解: 可并堆,注意本题合并时要判断两个节点是否在同一个堆中.本弱写了左偏树和斜堆,发现斜堆比 ...
- BZOJ1455罗马游戏
左偏树裸题 (搞板子搞到绝望x //罗马游戏 #include <bits/stdc++.h> using namespace std; const int N = 1000050; in ...
- bzoj1455 罗马游戏
Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那些得分很低的人嗤之以鼻 ...
- BZOJ1455: 罗马游戏
裸可并堆 #include<cstdio> #include<iostream> #include<cstring> #include<cmath> # ...
- [bzoj1455]罗马游戏
题目大意 需要兹瓷集合合并与删去集合内最小值. 可并堆 还能说什么呢,裸的-- #include<cstdio> #include<algorithm> #define fo( ...
- 【bzoj1455】罗马游戏 可并堆
[bzoj1455]罗马游戏 可并堆 2016-05-31 10:04:41 可并堆的裸题. 左偏树(小根堆为例 性质 1.满足堆的性质,每个节点权值小于左右儿子权值 2.每个节点有dis值,表示子 ...
- 【BZOJ1455】罗马游戏(左偏树)
[BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...
- BZOJ 1455: 罗马游戏( 配对堆 + 并查集 )
可并堆水题 --------------------------------------------------------- #include<bits/stdc++.h> using ...
- nkoj P3138 罗马游戏
nkoj P3138 罗马游戏 问题描述 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团. 最近举行了一次比武测试,每个人都得到了一个分数. 皇帝对那些得分很低的人嗤之以鼻. ...
最新文章
- ES6深入学习记录(一)class方法相关
- HDU1203_I NEED A OFFER!【01背包】
- weblogic查看内存情况
- php网页生命周期函数,PHP的生命周期
- 使用CLion的时候,对于cmake的使用
- python dataframe分组求和,pandas datafram中按特定月份分组和求和值
- 你可能需要为你的 APP 适配 iOS 11
- maven父子工程 + springboot
- css3 弹性盒模型 变化
- 数据预处理与特征工程—11.分层采样
- 转:Ajax与CustomErrors的尴尬
- Swift - 设置UIView的背景色和背景图片
- 腕能助手android9,腕间应用助手(com.gmf.watchapkassistant) - 1.7 - 应用 - 酷安
- 一般系统论的基本概念
- 大师级思考者是怎么探索事物本质的?
- 【Linux应用】Clonezilla使用指南
- python三国演义人物出场统计txt文本_python实例:三国演义TXT文本词频分析
- ET框架学习——消息系统之四
- 回归中的相关度和决定系数
- js转换中文为拼音以及首字母