学习了一下可合并堆的一种写法——左偏树
感觉左偏树是一种类似启发式的方法
学习左偏树后这题就水过去了

 var fa,l,r,a,d:array[..] of longint;
v:array[..] of boolean;
i,n,m,x,y,f:longint;
ch:char; function getf(x:longint):longint;
begin
if fa[x]<>x then fa[x]:=getf(fa[x]);
exit(fa[x]);
end; procedure swap(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end; function merge(x,y:longint):longint;
begin
if x= then exit(y);
if y= then exit(x);
if a[x]>a[y] then swap(x,y);
r[x]:=merge(r[x],y);
if d[r[x]]>d[l[x]] then swap(l[x],r[x]);
d[x]:=d[r[x]]+; //d表示这个节点到最近的可插入节点的距离,根据左偏树性质易得
exit(x);
end; begin
readln(n);
for i:= to n do
begin
read(a[i]);
fa[i]:=i;
end;
d[]:=-;
readln(m);
for i:= to m do
begin
read(ch);
if ch='M' then
begin
readln(x,y);
if v[x] or v[y] then continue;
x:=getf(x);
y:=getf(y);
if x=y then continue;
f:=merge(x,y);
fa[x]:=f;
fa[y]:=f;
end
else begin
readln(x);
if v[x] then
begin
writeln();
continue;
end;
x:=getf(x);
v[x]:=true;
writeln(a[x]);
fa[x]:=merge(l[x],r[x]);
fa[fa[x]]:=fa[x];
end;
end;
end.

bzoj1455的更多相关文章

  1. bzoj1455: 罗马游戏 + bzoj2809: Dispatching(可并堆)

    昨天看了可并堆是什么,写的是左偏树 大概就是一棵树 1.有左偏性质,即当前根到左叶子节点距离比到右叶子节点距离大 2.有堆性质,堆顶关键字比子树关键字小 合并两个堆的时候,关键字大的插入到关键字小的那 ...

  2. BZOJ1455 罗马游戏 左偏树 可并堆

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1455 题意概括 n个人,2种操作. 一种是合并两个人团,一种是杀死某一个人团的最弱的人. 题解 左 ...

  3. 【BZOJ1455】罗马游戏(左偏树)

    [BZOJ1455]罗马游戏(左偏树) 题面 BZOJ 然而权限题. 题解 左偏树模板题. #include<iostream> #include<cstdio> #inclu ...

  4. [bzoj1455]罗马游戏_左偏树_并查集

    罗马游戏 bzoj-1455 题目大意:给你n个人,2种操作,m次操作:1.将i号士兵所在的集合的最小值删除 2.合并i和j两个士兵所在的团体 注释:$1\le n\le 10^6$,$1\le m ...

  5. 【BZOJ-1455】罗马游戏 可并堆 (左偏树)

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

  6. Bzoj1455 罗马游戏

    Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1622  Solved: 679 Description 罗马皇帝很喜欢玩杀人游戏. 他的军队里面有n个人 ...

  7. BZOJ1455——罗马游戏

    1.题目大意:维护一个数据结构,可以实现合并操作,还能询问最小值 2.分析:这种问题当然是可并堆啦 随便写了一个左偏树QAQ #include <cstdio> #include < ...

  8. 【bzoj1455】罗马游戏 可并堆

    2016-05-31  10:04:41 可并堆的裸题. 左偏树(小根堆为例 性质 1.满足堆的性质,每个节点权值小于左右儿子权值 2.每个节点有dis值,表示子树最浅的叶子深度加1 3.左子树dis ...

  9. C++之路进阶——bzoj1455(罗马游戏)

    F.A.Qs Home Discuss ProblemSet Status Ranklist Contest ModifyUser  gryz2016 Logout 捐赠本站 Notice:由于本OJ ...

随机推荐

  1. C语言基础知识小总结(2)

    上个总结比较笼统,下面写的稍微详细点吧算是.   一.控制台屏幕打印 1.putchar();   格式: void putchar(char c);  //直接把一个字符输出到屏幕上 2.print ...

  2. LAMP网站架构方案分析

    本文引自:http://www.williamlong.info/archives/1908.html LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框 ...

  3. Video事件、方法-- DOM

    <video> 元素同样拥有方法.属性和事件.其中的方法用于播放.暂停以及加载等.其中的属性(比如时长.音量等)可以被读取或设置.其中的 DOM 事件能够通知您,比方说,<video ...

  4. 笔记一、初识 Javascript

    一.初识 Javascript javascript是一种专为与网页交互儿设计的脚本语言.由三部分组成:ECMAScript  (ECMA-262定义) : 提供核心语言功能文档对象模型(DOM): ...

  5. 修改tomcat默认的端口号

    协同管理系统黙认使用Tomcat默认的端口8080,除8080端口外Tomcat还会占用8005,8009和8443端口.如果这4个端口已被占用,可以将协同管理系统修改为使用其它端口. 修改方法如下: ...

  6. objective-c中字符串长度计算

    我们知道,在c语言中,使用sizeof ()计算在内存中占用的字节数, 引用string.h后,使用strlen()计算字符串的长度(不包含\0). 而在object-c中, "length ...

  7. jQuery 事件 方法

    jQuery 事件方法 事件方法触发器或添加一个函数到被选元素的事件处理程序. 下面的表格列出了所有用于处理事件的 jQuery 方法. 方法 描述 bind() 向元素添加事件处理程序 blur() ...

  8. [Lua]cocos framework

    package_support function cc.register(name, package) function cc.load(...) function cc.bind(target, . ...

  9. [转] 《高性能HTML5》读后整理的Web性能优化内容

    读后感 先说说<高性能HTML5>这本书的读后感吧,个人觉得这本书前两章跟书的标题完全搭不上关系,或者说只能算是讲解了“高性能”这三个字,HTML5完全不见踪影.个人觉得作者应该首先把HT ...

  10. Convention插件与“约定”支持

    主要用于Action映射和Result映射 struts2-convention-plugin-2.3.16.3.jar 会将 |--实现了com.opensymphony.xwork2.Action ...