解题:HNOI 2012 永无乡
并查集维护连通性,然后暴力启发式合并就完了,记得合并时边DFS边清空数组
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=;
int val[N],siz[N],rnk[N],son[N][];
int aset[N],volu[N],root[N];
int n,m,x,y,t1,t2,tot;
char rd[];
int finda(int x)
{
return x==aset[x]?x:aset[x]=finda(aset[x]);
}
void Pushup(int nde)
{
siz[nde]=siz[son[nde][]]+siz[son[nde][]]+;
}
int Create()
{
siz[++tot]=;
rnk[tot]=rand();
return tot;
}
int Merge(int x,int y)
{
if(!x||!y)
return x+y;
else if(rnk[x]<=rnk[y])
{
son[x][]=Merge(son[x][],y);
Pushup(x); return x;
}
else
{
son[y][]=Merge(x,son[y][]);
Pushup(y); return y;
}
}
void Split(int nde,int &x,int &y,int tsk)
{
if(!nde) x=y=;
else
{
if(val[nde]<=tsk)
x=nde,Split(son[nde][],son[nde][],y,tsk);
else
y=nde,Split(son[nde][],x,son[nde][],tsk);
Pushup(nde);
}
}
int Query(int nde,int tsk)
{
if(tsk<=siz[son[nde][]]) return Query(son[nde][],tsk);
else if(tsk==siz[son[nde][]]+) return nde;
else return Query(son[nde][],tsk-siz[son[nde][]]-);
}
void Insert(int &nde,int tsk)
{
Split(nde,x,y,val[tsk]);
nde=Merge(Merge(x,tsk),y);
}
void DFS(int &gal,int nde)
{
if(son[nde][]) DFS(gal,son[nde][]);
if(son[nde][]) DFS(gal,son[nde][]);
son[nde][]=son[nde][]=; Insert(gal,nde);
}
void Unite(int x,int y)
{
int f1=finda(x),f2=finda(y);
if(volu[f1]<volu[f2]) swap(f1,f2);
volu[f1]+=volu[f2],aset[f2]=f1;
DFS(root[f1],root[f2]);
}
int main ()
{
srand();
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%d",&val[i]);
root[i]=Create();
aset[i]=i,volu[i]=;
}
while(m--)
scanf("%d%d",&t1,&t2),Unite(t1,t2);
scanf("%d",&m);
while(m--)
{
scanf("%s%d%d",rd,&t1,&t2);
if(rd[]=='B')
scanf("%d%d",&t1,&t2),Unite(t1,t2);
else
{
int ans=Query(root[finda(t1)],t2);
ans?printf("%d\n",ans):printf("-1\n");
}
}
return ;
}
解题:HNOI 2012 永无乡的更多相关文章
- HNOI 2012 永无乡
codevs 1477 永无乡 http://codevs.cn/problem/1477/ 2012年湖南湖北省队选拔赛 时间限制: 1 s 空间限制: 128000 KB 题目描述 Des ...
- BZOJ 2733 HNOI 2012 永无乡 平衡树启示式合并
题目大意:有一些岛屿,一開始由一些无向边连接. 后来也有不断的无向边增加,每个岛屿有个一独一无二的重要度,问随意时刻的与一个岛屿联通的全部岛中重要度第k大的岛的编号是什么. 思路:首先连通性一定要用并 ...
- HNOI(湖南省选试题)——永无乡
今天写了一道十分巧妙的数据结构题---永无乡 (看的题解......) 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 ...
- [BZOJ2733][HNOI2010]永无乡 解题报告 启发式合并,线段树合并
好久没更新博客了,前段时间一直都在考试,都没时间些,现在终于有点闲了(cai guai)... 写了一道题,[HNOI2012]永无乡,其实是一道板子题,我发现我写了好多板子题...还是太菜了... ...
- 洛谷 P3224 [HNOI2012]永无乡 解题报告
P3224 [HNOI2012]永无乡 题目描述 永无乡包含 \(n\) 座岛,编号从 \(1\) 到 \(n\) ,每座岛都有自己的独一无二的重要度,按照重要度可以将这 \(n\) 座岛排名,名次用 ...
- BZOJ2733 [HNOI2012]永无乡 【线段树合并】
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- BZOJ2733 永无乡【splay启发式合并】
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- BZOJ2733: [HNOI2012]永无乡(线段树合并)
Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...
- BZOJ 2733 【HNOI2012】 永无乡
Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...
随机推荐
- Intellij IDEA 热部署插件Jrebel激活
激活前请确保已经安装好了Jrebel插件,本文通过反向代理激活. 第一步:下载激活工具(即代理工具),下载地址:https://github.com/ilanyu/ReverseProxy/relea ...
- selenium自动化之稳定版本环境介绍
大家都知道,目前selenium版本已经升级到3.0了,selenium3只是在selenium2的基础上做了一些调整,最明显的区别就是 selenium2对Firefox的支持最高只支持46及以下版 ...
- [转]git学习------>git-rev-parse命令初识
git学习------>git-rev-parse命令初识 2017年06月13日 10:04:13 阅读数:2172 一.准备工作 第一步:在d盘git test目录下,新建工作区根目录dem ...
- 前端基础HTML
web的服务本质 浏览器发送请求>>>HTTP协议>>>服务端接受请求>>>服务端返回响应>>>服务端把HTML文件内容发给浏览 ...
- Python基础入门(模块和包)
1 模块 1.1 什么是模块 在 Python 中,一个 .py 文件就称之为一个模块(Module). 我们学习过函数,知道函数是实现一项或多项功能的一段程序 .其实模块就是函数功能的扩展.为什么这 ...
- Zabbix部署-LNMP环境
原文发表于cu:2016-05-05 参考文档: LNMP安装:http://www.osyunwei.com/archives/7891.html 一.环境 Server:CentOS-7-x86_ ...
- Fedora 28 UEFI模式安装过程记录
这次的折腾是个意外.不过还是要记录一下. 多次做启动盘,把U盘做坏了.将U盘用量产工具修复以后就能做启动盘了.从官网下了Fedora 28的镜像(与CentOS同属RedHat系,尽量与鸟哥一致),用 ...
- 在香港网站使用工商银行的MasterCard,工商银行所犯的低级的错误,金融安全何在
- Intense Heat(前缀和或尺取)
The heat during the last few days has been really intense. Scientists from all over the Berland stud ...
- 【转】node.js框架比较
我偶然间看到这篇文章,转这个文章并没有什么含义,仅仅是感觉总结的不错,对于新学node的友友们来说希望这篇文章为大家对 Node.js 后端框架选型带来一些帮助,学习不再迷茫,也是让我有个保存,以后参 ...