题解:

爬到了bzoj的数据哈哈哈哈

然后提交上去t了 自己测只有1秒多呀 不理解

然后这题目就是个线段树/平衡树合并裸题

来练一下线段树合并 据说是nlogn的

#include <bits/stdc++.h>
using namespace std;
const int N=2e5;
#define rg register
#define IL inline
int n,m,fa[N],a[N],b[N],cnt,root[N],count2[N*],ls[N*],rs[N*];
bool f[N];
int find(rg int x)
{
rg int tmp;
if (fa[x]!=x) tmp=find(fa[x]);
else return(x);
fa[x]=tmp;
return(tmp);
}
IL void link(rg int x,rg int y)
{
x=find(x),y=find(y);
if (x!=y) fa[x]=y;
}
#define mid (h+t)/2
void insert(int &x,int goal,int h,int t)
{
if (!x) x=++cnt;
count2[x]++;
if (h==t) return;
if (goal<=mid) insert(ls[x],goal,h,mid);
else insert(rs[x],goal,mid+,t);
}
int query(int x,int y,int h,int t)
{
if (h==t)
if (y==&&x!=) return(h); else return();
if (count2[ls[x]]<y) return(query(rs[x],y-count2[ls[x]],mid+,t));
else return(query(ls[x],y,h,mid));
}
int merge(int &x,int &y)
{
if (x==) return(y);
if (y==) return(x);
ls[x]=merge(ls[x],ls[y]);
rs[x]=merge(rs[x],rs[y]);
count2[x]=count2[ls[x]]+count2[rs[x]];
return(x);
}
int main()
{
freopen("noi.in","r",stdin);
freopen("noi.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>m;
for (rg int i=;i<=n;i++) cin>>a[i],b[a[i]]=i,fa[i]=i;
for (rg int i=;i<=m;i++)
{
int x,y;
cin>>x>>y;
link(x,y);
}
for (rg int i=;i<=n;i++)
{
int x=find(i);
insert(root[x],a[i],,N);
}
int qt;
cin>>qt;
b[]=-;
for (rg int i=;i<=qt;i++)
{
int x,y;
char cc;
cin>>cc;
cin>>x>>y;
if (cc=='Q')
{
x=find(x);
int t=query(root[x],y,,N);
cout<<b[query(root[x],y,,N)]<<endl;
}
if (cc=='B')
{
x=find(x); y=find(y);
if (x!=y)
{
fa[x]=y;
root[y]=merge(root[x],root[y]);
}
}
}
return ;
}

2733: [HNOI2012]永无乡的更多相关文章

  1. BZOJ 2733: [HNOI2012]永无乡 启发式合并treap

    2733: [HNOI2012]永无乡 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  2. bzoj 2733: [HNOI2012]永无乡 离线+主席树

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1167  Solved: 607[Submit][Status ...

  3. BZOJ 2733: [HNOI2012]永无乡(treap + 启发式合并 + 并查集)

    不难...treap + 启发式合并 + 并查集 搞搞就行了 --------------------------------------------------------------------- ...

  4. BZOJ 2733: [HNOI2012]永无乡 [splay启发式合并]

    2733: [HNOI2012]永无乡 题意:加边,询问一个连通块中k小值 终于写了一下splay启发式合并 本题直接splay上一个节点对应图上一个点就可以了 并查集维护连通性 合并的时候,把siz ...

  5. bzoj 2733: [HNOI2012]永无乡 -- 线段树

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec  Memory Limit: 128 MB Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自 ...

  6. Bzoj 2733: [HNOI2012]永无乡 数组Splay+启发式合并

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3955  Solved: 2112[Submit][Statu ...

  7. Bzoj 2733: [HNOI2012]永无乡(线段树+启发式合并)

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec Memory Limit: 128 MB Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己 ...

  8. 线段树合并+并查集 || BZOJ 2733: [HNOI2012]永无乡 || Luogu P3224 [HNOI2012]永无乡

    题面:P3224 [HNOI2012]永无乡 题解: 随便写写 代码: #include<cstdio> #include<cstring> #include<iostr ...

  9. 2733: [HNOI2012]永无乡 - BZOJ

    Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...

  10. bzoj 2733: [HNOI2012]永无乡

    Description 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以 ...

随机推荐

  1. Nginx 学习笔记(五)nginx-vod-module 模块

    nginx-vod-module 一.编译 ./configure \ --user=www \ --group=www \ --prefix=/usr/local/openresty \ --wit ...

  2. luogu 1196 银河英雄传说 带权并查集

    带权并查集,其实有点像许多队列问情况的小学奥数 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<= ...

  3. luogu 1631 序列合并

    priority_queue的使用,注意 a[1]+b[1],a[1]+b[2],a[1]+b[3],a[1]+b[4].......a[1]+b[n] a[2]+b[1]......... .. a ...

  4. Synchronized和lock的区别和用法

    一.synchronized和lock的用法区别 (1)synchronized(隐式锁):在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要 ...

  5. 转载 int和string 类型的互换

    https://blog.csdn.net/u012421436/article/details/51386690 不论是在什么语言下编程(除C,因为C是没有string类型的),int与string ...

  6. adb查看安卓设备系统Android版本

    adb shell getprop "ro.build.version" 结果中如下两项便是版本信息: [ro.build.version.release]: [4.4.4][ro ...

  7. linux相关设置

    mysql开机自启: [root@workstudio system]# systemctl enable mysqld

  8. LaTeX 对齐问题

    一.一行文本对齐 \leftline{左对齐} \centerline{居中} \rightline{右对齐} 二.多行文本或段落对齐 左对齐 \begin{flushleft}...\end{flu ...

  9. Jetson tk1 安装 usbtoserials 驱动(重新刷机)

    一.tk1驱动包,文件系统和源码下载 截止2016年9月1号,tk1最版本为R21.5. (以下三个文件放在同一个文件夹下) 1.driver package(驱动包,相当于安装程序) https:/ ...

  10. 递归与尾递归(C语言)【转】

    作者:archimedes 出处:http://www.cnblogs.com/archimedes/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原 ...