[bzoj1455]罗马游戏
题目大意
需要兹瓷集合合并与删去集合内最小值。
可并堆
还能说什么呢,裸的……
#include<cstdio>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=1000000+10;
int fa[maxn],dis[maxn],left[maxn],right[maxn],a[maxn],root[maxn];
bool bz[maxn];
int i,j,k,l,t,n,m;
char ch;
char get(){char ch=getchar();while (ch!='M'&&ch!='K') ch=getchar();return ch;
}
int read(){int x=0;char ch=getchar();while (ch<'0'||ch>'9') ch=getchar();while (ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x;
}
int getfa(int x){return fa[x]?fa[x]=getfa(fa[x]):x;
}
int merge(int x,int y){if (!x||!y) return x+y;if (a[x]>a[y]) swap(x,y);right[x]=merge(right[x],y);if (dis[left[x]]<dis[right[x]]) swap(left[x],right[x]);dis[x]=dis[right[x]]+1;return x;
}
int deletemin(int x){return merge(left[x],right[x]);
}
int main(){n=read();fo(i,1,n) a[i]=read(),root[i]=i;m=read();fo(i,1,m){ch=get();if (ch=='M'){j=read();k=read();if (bz[j]||bz[k]) continue;j=getfa(j);k=getfa(k);if (j==k) continue;fa[j]=k;root[k]=merge(root[j],root[k]);}else{j=read();if (bz[j]) printf("0\n");else{j=getfa(j);printf("%d\n",a[root[j]]);bz[root[j]]=1;root[j]=deletemin(root[j]);}}}
}
[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】罗马游戏 可并堆
[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个人,每个人都是一个独立的团. 最近举行了一次比武测试,每个人都得到了一个分数. 皇帝对那些得分很低的人嗤之以鼻. ...
- 【BZOJ1455】罗马游戏
[题目链接] 点击打开链接 [思路要点] 可并堆模板题. [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 10 ...
最新文章
- 仅用 4 小时,吃透“百度太行”背后硬科技!
- mssql的T-SQL教程(从建登陆到建库、表和约束)
- 【还有这种网站?】庆哥终于知道为什么他的数据结构与算法学的那么好了
- angularjs 添加拦截器
- 如何构建自己的SIP SERVER!
- 清华计算机系教学计划,清华大学电子信息科学与技术教学计划
- 金三银四Java面试的一些感受,实战篇
- android 整合最新X5WebView 以及离线安装教程
- Windows CE 5.0 五笔输入法
- 激光共聚焦如何选择荧光染料
- YY 数据库平台化建设实践
- 基于[三星6818]I2C驱动开发的0.96寸oled屏
- k8s nginx ingress 显示证书错误
- beautify配置
- 计算机英语ppt答辩,急求英语答辩PPT范文
- python独立样本t检验 图_Python-两独立样本资料t检验
- Java桌面应用程序设计新贵:SWT简介
- Scrapy入门到放弃06:Spider中间件
- 头条搬砖最新实操玩法
- 管理沟通 移情原则_解决技术上的移情差距
热门文章
- linux mint/ubuntu离线安装intel 3165驱动
- Java中文汉字排序
- 最新版勤哲Excel服务器V2017.13.0.1无限用户支持手机APP,微信,任意安装,支持后续升级
- ncr管理系统_完全拆解小米智能电动车【图解】
- Leetcode刷题100天—49. 字母异位词分组( 排序)—day37
- 程序员初学者频繁使用count(*),被组长批评后怒怼:性能并不拉垮
- C++ 内存泄露和检测
- 心脏病和卒中非传统风险因素在女性中的上升幅度超过男性
- java的while、do while循环和案例
- 使用微软自带输入法输入英文之间间距突然变大