bzoj1455罗马游戏*
bzoj1455罗马游戏
题意:
维护数据结构支持合并和弹出最小值。n≤1000000,m≤100000
题解:
可并堆,注意本题合并时要判断两个节点是否在同一个堆中。本弱写了左偏树和斜堆,发现斜堆比左偏树快,不知道为什么,求神犇解答。
代码:
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define inc(i,j,k) for(int i=j;i<=k;i++) 5 #define maxn 1000010 6 using namespace std; 7 8 inline int read(){ 9 char ch=getchar(); int f=1,x=0; 10 while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();} 11 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); 12 return f*x; 13 } 14 int ch[maxn][2],v[maxn],fa[maxn]; bool die[maxn]; 15 int find(int x){while(fa[x])x=fa[x]; return x;} 16 int merge(int x,int y){ 17 if(!x||!y)return x+y; if(v[x]>v[y])swap(x,y); ch[x][1]=merge(ch[x][1],y); 18 fa[ch[x][1]]=x; swap(ch[x][0],ch[x][1]); return x; 19 } 20 void pop(int x){ 21 fa[ch[x][0]]=fa[ch[x][1]]=0; merge(ch[x][0],ch[x][1]); ch[x][0]=ch[x][1]=0; 22 } 23 int n,m; char opt[3]; 24 int main(){ 25 n=read(); inc(i,1,n)v[i]=read(); m=read(); 26 inc(i,1,m){ 27 scanf("%s",opt); 28 if(opt[0]=='M'){ 29 int a=read(),b=read(); if(die[a]||die[b])continue; int aa=find(a),bb=find(b); 30 if(aa==bb)continue; merge(aa,bb); 31 } 32 if(opt[0]=='K'){ 33 int a=read(); if(die[a]||a>n)puts("0");else{ 34 int aa=find(a); pop(aa); die[aa]=1; printf("%d\n",v[aa]); 35 } 36 } 37 } 38 return 0; 39 }
20160810
转载于:https://www.cnblogs.com/YuanZiming/p/5769449.html
bzoj1455罗马游戏*相关推荐
- 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个人,每个人都是一个独立的团. 最近举行了一次比武测试,每个人都得到了一个分数. 皇帝对那些得分很低的人嗤之以鼻. ...
- 【BZOJ1455】罗马游戏
[题目链接] 点击打开链接 [思路要点] 可并堆模板题. [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 10 ...
最新文章
- mingw控制台中文乱码
- USB协议基础知识笔记
- Hive时间是String格式截取字串和转换数据类型小贴士
- Three.js中自定义控制几何体的点和面的属性
- 什么用于创建python与数据库之间的链接_python3连接数据库用什么
- 实现多线程的方式之实现Callable接口
- 产品经理思维模型:创新价值曲线
- 基础学习:高斯混合模型GMM
- 多线程--对象及变量的并发访问
- 编程实现二叉树的遍历
- Python简单方法实现英文文本词频统计
- 1487 C. Minimum Ties
- PAT L1-046 整除光棍 光棍当然不是单身汪呢
- Error:A JNI error has occurred, please check your installation and try again的解决方法
- 2018版 主流SDR设备横向比较
- runHiC分析HiC_seq数据
- 2019 杭电 多校第3场 1006 Fansblog (HDU 6608)
- SpringBoot项目访问jsp页面500问题处理
- CMMI-技术评审管理方案
- 【从入门到精通 项目1】项目经理带你-零基础学习C/C++
热门文章
- 由一个骂评引发的作者产品体验报告-----我要集气
- uniapp应用和页面生命周期
- 博士后申请攻略:从大陆申请海外的postdoc
- 高考数学辅导:解三角形的综合应用-图文(解析版)
- latex 图片、表格、定义、理论 简单示例
- 华科与东北大学计算机专业,东北地区“赫赫有名”的5所大学,个个实力雄厚,有你的母校没?...
- ASP.NET网页间传递参数
- 苹果osx系统切换中文
- 7个管理学常用工具:SWOT、PDCA、6W2H、SMART、WBS、二八原则
- LAP, UTKFace,webface, morph II 人脸数据集