E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
BZOJ2733
【
BZOJ2733
】[HNOI2012]永无乡
题意:n个有权值的点,每次连边或查询某个点所在的连通块中权值第k大的点的编号(不存在输出-1)思路1:每个点建一个可并堆,每次连边合并两个可并堆(记录一下size),递归查询即可#include#defineinf0x7fffff#defineN3000009usingnamespacestd;intnumber=0;intn,m,q;intf[N],father[N],left[N],right
wzf_2000
·
2020-08-13 23:15
bzoj
可并堆
[HNOI2012]永无乡——Splay
题面
Bzoj2733
解析同样是一道上课时讲的题,对于每个连通块都维护一个Splay,连接不同块的操作就等价于合并两棵Splay,考虑暴力合并,将较小的Splay断开,依次将每个点插入另外一棵Splay中
weixin_30600503
·
2020-08-13 20:03
【
BZOJ2733
】永无乡(线段树,并查集)
题面BZOJ题解线段树合并线段树合并是一个很有趣的姿势前置技能:动态开点线段树具体实现:每次合并两棵线段树的时候,假设叫做t1,t2,其中要把t2合并进t1中假设当前位置t1没有节点,则直接把t2的这个位置给t1(直接接上去就好啦)如果t2这个位置没有节点,那么直接return否则,两个位置都有节点,把两个节点的信息合并,然后递归合并左右子树简单的代码如下:voidMergeNode(int&r1
小蒟蒻yyb
·
2020-08-13 16:10
BZOJ
各省省选
线段树
并查集
[
BZOJ2733
][HNOI2012永无乡][线段树合并+并查集]
[
BZOJ2733
][HNOI2012永无乡]题目大意:有一些岛屿,一开始由一些无向边连接。
g1n0st
·
2020-08-13 14:21
Bzoj
2017
线段树
线段树合并
并查集
bzoj2733
: [HNOI2012]永无乡(并查集+主席树)
题目传送门。解法:跟3545解法差不多。https://blog.csdn.net/hanks_o/article/details/79903342这道题还没了边权。直接连通。那么并查集。据说要启发式。小的向大的合并。然后就没了?代码实现:#include#include#include#include#include#include#includeusingnamespacestd;struct
Hanks_o
·
2020-08-13 11:05
BZOJ
主席树
并查集
bzoj2733
[HNOI2012]永无乡(splay启发式合并)
bzoj2733
[HNOI2012]永无乡原题地址:http://www.lydsy.com/JudgeOnline/problem.php?
Bfk_
·
2020-08-13 11:07
&
图论
平衡树
splay
启发式合并
题解
bzoj2733
【hnoi2012】永无乡
2733:[HNOI2012]永无乡TimeLimit:10SecMemoryLimit:128MBSubmit:1728Solved:907[Submit][Status][Discuss]Description永无乡包含n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到n来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛a出
AaronPolaris
·
2020-08-13 11:21
启发式合并
并查集
Treap
OIer的狂欢
bzoj2733
永无乡 线段树合并
这道题是一道经典的平衡树+启发式合并吧。那么考虑用可持久化线段树来写。对每一个节点保存一棵线段树表示所在块的编号的集合(因此可以一个块值保存一棵树),然后合并的时候就地柜合并左子节点和右子节点,然后更新节点的值即可。时空复杂度O(NlogN)AC代码如下:#include#include#include#defineN100005#defineM2000005usingnamespacestd;i
lych_cys
·
2020-08-13 10:04
bzoj
BZOJ2773(HNOI2012)[永无乡]--Splay启发式合并
【链接】
bzoj2733
【解题报告】好像是平衡树裸题吧,然后splay启发式合并码掉了。
Greninja_Wu
·
2020-08-11 11:44
BZOJ题解
平衡树
BZOJ题解
By
Greninja
部分常见刷题网站的题解
By
Greninja
平衡树
BZOJ
启发式合并
BZOJ2733
[HNOI2012]永无乡 平衡树启发式合并
首先因为题目中涉及到查询第K小值,所以用平衡树来维护每个连通分支的信息。那么加边这个操作怎么实现呢?其实就是将任意的两个平衡树合并。给我们的直观感受是把小的树合并到大的树里比较高效。事实上,这样做的话,所有合并操作可以在O(nlog^2n)之内解决。为什么呢?可以这样来分析。每个节点经过一次合并操作以后,它所在的树的大小至少要加倍,那么也就是说至多一个节点被合并操作影响logn次,每次合并后的插入
KuribohG
·
2020-07-31 14:50
BZOJ
BZOJ2733
线段树合并
第一次写线段树合并一开始完全自己yy板子写得特别丑后来看到了别人的板子发现又简洁又好写//NeverSayNeveruntiltheveryend.#include#include#defineN100050usingnamespacestd;inttr[20*N],ls[20*N],rs[20*N],fa[N],root[N],ys[N],hash[N];intn,m,cnt,v,ans;int
HbFS-
·
2016-07-24 20:56
BZOJ2733
永无乡
题意:给定n个点和它们的排名,支持两种操作:1.连接两个点2.询问某个点所在的联通块内排名第k大的是哪个点。首先被剧透是线段树的合并。我仔细想了想这东西应该是很难写的。hzt:就两行你快去写!QAQ然后我仔细想了想大概这样:对于每个联通块开一个线段树,某个线段树的某段区间[l,r]意味着排名在[l,r]之间的节点信息。也就是说假设我们有点x所在的联通块。对点x所在的联通块开线段树,然后1~n区间,
zxn0803
·
2016-05-23 20:00
【codevs1477】【
BZOJ2733
】永无乡,Splay+启发式合并
传送门1传送门2写在前面:被旁边的小恐龙嘲讽半天指针,最后一遍A让他目瞪口呆思路:原本这个splay模板是用来打别的题的,但打完才发现那道题根本和splay没关系……这道题就是求一个k小值和合并树,这里我YY了一下启发式合并(之前没写过也没看过),搞了个并查集,想了半天存根的方法,后来放到了两个数组里去#include usingnamespacestd; intq,n,m,root,x,y,to
xym_CSDN
·
2016-03-22 21:00
bzoj2733
永无乡 线段树合并
这道题是一道经典的平衡树+启发式合并吧。那么考虑用可持久化线段树来写。 对每一个节点保存一棵线段树表示所在块的编号的集合(因此可以一个块值保存一棵树),然后合并的时候就地柜合并左子节点和右子节点,然后更新节点的值即可。显然这样和启发式合并时等价的。因此为O(Nlog^2N),只是空间大了一点为O(NlogN),平衡树O(N)。AC代码如下:#include #include #inc
lych_cys
·
2016-03-10 21:00
线段树
启发式合并
BZOJ2733
: [HNOI2012]永无乡
Description永无乡包含n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到n来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛a出发经过若干座(含0座)桥可以到达岛b,则称岛a和岛b是连通的。现在有两种操作:Bxy表示在岛x与岛y之间修建一座新桥。Qxk表示询问当前与岛x连通的所有岛中第k重要的是哪座岛,即所有与岛x连通
wzj_is_a_juruo
·
2016-02-02 13:00
bzoj2733
: [HNOI2012]永无乡
题目bzoj2733Description永无乡包含n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到n来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛a出发经过若干座(含0座)桥可以到达岛b,则称岛a和岛b是连通的。现在有两种操作:Bxy表示在岛x与岛y之间修建一座新桥。Qxk表示询问当前与岛x连通的所有岛中第k重要的是哪座
zmh964685331
·
2016-01-15 13:00
bzoj2733
: [HNOI2012]永无乡
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2733思路:splay裸题,没啥好说的...用来练练手#include #include #include #include #definelsch[p][0] #definersch[p][1] constintmaxn=100010; usingnamespacestd; intf[max
thy_asdf
·
2015-12-30 14:00
bzoj2733
【hnoi2012】永无乡
2733:[HNOI2012]永无乡TimeLimit: 10Sec MemoryLimit: 128MBSubmit: 1728 Solved: 907[Submit][Status][Discuss]Description永无乡包含n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到n来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个
AaronGZK
·
2015-11-24 17:00
bzoj
【模板】【
bzoj2733
】[HNOI2012]永无乡 Treap
Description永无乡包含n座岛,编号从1到n,每座岛都有自己的独一无二的重要度,按照重要度可以将这n座岛排名,名次用1到n来表示。某些岛之间由巨大的桥连接,通过桥可以从一个岛到达另一个岛。如果从岛a出发经过若干座(含0座)桥可以到达岛b,则称岛a和岛b是连通的。现在有两种操作:Bxy表示在岛x与岛y之间修建一座新桥。Qxk表示询问当前与岛x连通的所有岛中第k重要的是哪座岛,即所有与岛x连通
LOI_DQS
·
2015-11-23 18:00
hnoi
【
bzoj2733
】 [HNOI2012] 永无乡
sb题合并:并查集+线段树启发式合并,注意动态开点查询:直接查对应线段树的K大。时间复杂度O(qlog2n)#include usingnamespacestd; #definerep(i,a,b)for(inti=a,_=b;i=_;i--) #definemaxn200007 #definemaxs3000007 inlineintrd(){ charc=getchar(); while(!
GEOTCBRL
·
2015-11-20 23:00
BZOJ2733
[HNOI2012]永无乡 平衡树启发式合并
首先因为题目中涉及到查询第K小值,所以用平衡树来维护每个连通分支的信息。那么加边这个操作怎么实现呢?其实就是将任意的两个平衡树合并。给我们的直观感受是把小的树合并到大的树里比较高效。事实上,这样做的话,所有合并操作可以在O(nlog^2n)之内解决。为什么呢?可以这样来分析。每个节点经过一次合并操作以后,它所在的树的大小至少要加倍,那么也就是说至多一个节点被合并操作影响logn次,每次合并后的插入
KuribohG
·
2014-05-31 20:00
上一页
1
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他