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的更多相关文章

  1. bzoj 1455: 罗马游戏 左偏树+并查集

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 668  Solved: 247[Submit][Status] Descriptio ...

  2. BZOJ 1455: 罗马游戏( 配对堆 + 并查集 )

    可并堆水题 --------------------------------------------------------- #include<bits/stdc++.h>   usin ...

  3. BZOJ 1455: 罗马游戏 [可并堆]

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1715  Solved: 718[Submit][Status][Discuss] ...

  4. bzoj 1455 可并堆+并查集

    一个堆和一个并查集对应,并且满足并查集中所有没有死的人等于堆中的人 /************************************************************** Pr ...

  5. bzoj 1455: 罗马游戏

    1455: 罗马游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最 ...

  6. 【BZOJ 1455】 1455: 罗马游戏 (可并堆-左偏树+并查集)

    1455: 罗马游戏 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人,每个人都是一个独立的团.最近举行了一次平面几何测试,每个人都得到了一个分数. 皇帝很喜欢平面几何,他对那 ...

  7. BZOJ 1455 罗马游戏 左偏树

    题目大意:给定n个点,每一个点有一个权值,提供两种操作: 1.将两个点所在集合合并 2.将一个点所在集合的最小的点删除并输出权值 非常裸的可并堆 n<=100W 启示式合并不用想了 左偏树就是快 ...

  8. BZOJ 1455 罗马游戏 ——左偏树

    [题目分析] 左偏树的模板题目,大概就是尽量维护树的深度保持平衡,以及尽可能的快速合并的一种堆. 感觉和启发式合并基本相同. 其实并没有快很多. 本人的左偏树代码自带大常数,借鉴请慎重 [代码] #i ...

  9. 【BZOJ 1455】罗马游戏

    左偏树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ...

随机推荐

  1. AngularJs-MVC之路由、模块以及依赖注入

    前面呢,我们大概的了解了下AngularJs的入门,也做过了hello world的一个demo,不知道大家有没有掌握呢?在下面我们需要讲一些AngularJS的一些干货. 1,一个完整项目的目录结构 ...

  2. Cas_Java客户端登录相关过滤器的处理流程

    首先了解一下CAS登录原理: 1.CAS结构中一般包含CAS服务器(Cas验证服务器).应用服务器(程序所在服务器).客户端(web浏览器)三个部分. 2.客户端向应用服务器发出请求,由于未登录,会被 ...

  3. Bringing up interface eth0: Error:Connection activation failed:Device not managed by NetworkManager

    Just follow the below steps and everything will be ok...   1. Remove Network Manager from startup Se ...

  4. 在.NET使用JSON作为数据交换格式

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhoufoxcn.blog.51cto.com/792419/517093 我们 ...

  5. C#面向对象中类的静态成员与非静态成员的区别

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. _stdcall与_cdecl(了解)

    调用约定(Calling Convention)是指在程序设计语言中为了实现函数调用而建立的一种协议.这种协议规定了该语言的函数中的参数传送方式.参数是否可变和由谁来处理堆栈等问题.不同的语言定义了不 ...

  7. ECSHOP去版权标志删除Powered by ECShop(转)

    ECSHOP去版权标志删除Powered by ECShop ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2013-11-11   各位ECSHOP网店系统用户大家好 ...

  8. 网友微笑分享原创Jquery实现瀑布流特效

    首先非常感谢网友微笑的无私分享,此Jquery特效是一款非常流行和实用的瀑布流布局,核心代码只有几十行,是我见过代码量最少的瀑布流布局,非常适合网友们学习哦,希望大家好好看一下这个Jquery特效的原 ...

  9. linux安全加固(2)

    目录:1.BIOS2.SSH安全3.禁用telnet4.禁用代码编译5.ProFTP6.TCPwrappers7.创建一个SU组8.root通知9.history安全10.欢迎信息11.禁用所有特殊账 ...

  10. phpcms 采集教程

    Phpcms网站管理系统目前最新版本为Phpcms v9,作为国内主流CMS系统之一,目前已有数万网站的应用规模.那么其自带的采集模块功能如何呢,来看看吧. 文章采集 Phpcms v9默认内置有文章 ...