BZOJ 1455
STL的基本用法
(居然能空间卡过去= =!!!)
#include <cstdio>
#include <ext/pb_ds/priority_queue.hpp>
#include <functional>
#include <algorithm>
#include <utility>
__gnu_pbds::priority_queue<std::pair<int,int>,std::greater<std::pair<int,int> >,__gnu_pbds::pairing_heap_tag> hps[1000005];
int hpl;
struct denizer{
struct{
int fa,rk;
} d[1000005];
inline int find(int n){
int p=n,f;
while(d[p].fa){
p=d[p].fa;
}
while(n!=p){
f=d[n].fa;
d[n].fa=p;
n=f;
}
return p;
}
bool merge(int& a,int& b){
a=find(a),b=find(b);
if(a==b) return 0;
if(d[a].rk<d[b].rk) std::swap(a,b);
d[b].fa=a;
if(d[b].rk==d[a].rk) ++d[a].rk;
return 1;
}
}djset;
char s[10];
bool kd[1000005];
int Q;
int main(){
int n,i,j,k;
scanf("%d",&n);
for(i=1;i<=n;++i){
scanf("%d",&j);
hps[i].push(std::make_pair(j,i));
}
scanf("%d",&Q);
while(Q--){
scanf("%s%d",s,&j);
switch(s[0]){
case 'M':
scanf("%d",&k);
if(kd[j]||kd[k]) break;
if(djset.merge(j,k)){
hps[j].join(hps[k]);
}
break;
case 'K':
if(kd[j]){
printf("0\n");break;
}
j=djset.find(j);
if(!hps[j].empty()) printf("%d\n",hps[j].top().first),kd[hps[j].top().second]=true,hps[j].pop();
break;
}
}
return 0;
}
直接改了我出题的标程...
BZOJ 1455的更多相关文章
- bzoj 1455: 罗马游戏 左偏树+并查集
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 668 Solved: 247[Submit][Status] Descriptio ...
- BZOJ 1455: 罗马游戏( 配对堆 + 并查集 )
可并堆水题 --------------------------------------------------------- #include<bits/stdc++.h> usin ...
- BZOJ 1455: 罗马游戏 [可并堆]
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1715 Solved: 718[Submit][Status][Discuss] ...
- bzoj 1455 可并堆+并查集
一个堆和一个并查集对应,并且满足并查集中所有没有死的人等于堆中的人 /************************************************************** Pr ...
- bzoj 1455: 罗马游戏
1455: 罗马游戏 Time Limit: 5 Sec Memory Limit: 64 MB Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最 ...
- 【BZOJ 1455】 1455: 罗马游戏 (可并堆-左偏树+并查集)
1455: 罗马游戏 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那 ...
- BZOJ 1455 罗马游戏 左偏树
题目大意:给定n个点,每一个点有一个权值,提供两种操作: 1.将两个点所在集合合并 2.将一个点所在集合的最小的点删除并输出权值 非常裸的可并堆 n<=100W 启示式合并不用想了 左偏树就是快 ...
- BZOJ 1455 罗马游戏 ——左偏树
[题目分析] 左偏树的模板题目,大概就是尽量维护树的深度保持平衡,以及尽可能的快速合并的一种堆. 感觉和启发式合并基本相同. 其实并没有快很多. 本人的左偏树代码自带大常数,借鉴请慎重 [代码] #i ...
- 【BZOJ 1455】罗马游戏
左偏树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...
随机推荐
- Codeforces Round #381 (Div. 2) D. Alyona and a tree 树上二分+前缀和思想
题目链接: http://codeforces.com/contest/740/problem/D D. Alyona and a tree time limit per test2 secondsm ...
- /WEB-INF/userManage.jsp(31,82) Unterminated ${ tag
这个错误是说明${}少写了一半. Unterminated有这个的意思是你的jsp语法有错误
- new-nav-js
'use strict';define([ 'jquery'], function($) { var nav = { init : function() { $("#burger-menu& ...
- jQuery技术交流资料
jQuery技术交流资料https://www.zybuluo.com/jikeytang/note/65371
- 【CodeForces 621A】Wet Shark and Odd and Even
题 Today, Wet Shark is given n integers. Using any of these integers no more than once, Wet Shark wan ...
- 积木(DP)问题
问题:Do you remember our children time? When we are children, we are interesting in almost everything ...
- BZOJ-2324 营救皮卡丘 最小费用可行流+拆下界+Floyd预处理
准备一周多的期末,各种爆炸,回来后状态下滑巨快...调了一晚上+80%下午 2324: [ZJOI2011]营救皮卡丘 Time Limit: 10 Sec Memory Limit: 256 MB ...
- java连接mysql(三)
事务的四大特性(ACID) 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败.比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行 ...
- 通过HTTP协议实现多线程下载
1. 基本原理,每条线程从文件不同的位置开始下载,最后合并出完整的数据. 2. 使用多线程下载的好处 下载速度快.为什么呢?很好理解,以往我是一条线程在服务器上下载.也就是说,对应在服务器上, ...
- POJ2049Finding Nemo(bfs + 构图)
Finding Nemo Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 8456 Accepted: 1975 Desc ...