博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P3224 [HNOI2012]永无乡
阅读量:6872 次
发布时间:2019-06-26

本文共 1835 字,大约阅读时间需要 6 分钟。

思路

平衡树+启发式合并

貌似也可以线段树合并

连边就是合并两个Treap,查询就是第k大

使用Treap,好写好调

代码

#include 
#include
#include
#include
using namespace std;int Nodecnt=0,root[100100*2],fa[100100*2],n,m,w_p[100100*2];struct Node{ int lson,rson,sz,val,ran,num;}Treap[100100*2];int find(int x){ if(fa[x]==x) return x; else return fa[x]=find(fa[x]);}queue
q;void throwin(int x){ q.push(x);}int getnew(int val,int num){ int o; if(q.size()) o=q.front(),q.pop(); else o=++Nodecnt; Treap[o].lson=Treap[o].rson=0; Treap[o].sz=1; Treap[o].ran=rand(); Treap[o].val=val; Treap[o].num=num; return o;}void pushup(int o){ Treap[o].sz=Treap[Treap[o].lson].sz+Treap[Treap[o].rson].sz+1;}void rorateL(int &o){ int x=Treap[o].rson; Treap[o].rson=Treap[x].lson; Treap[x].lson=o; pushup(o); pushup(x); o=x;}void rorateR(int &o){ int x=Treap[o].lson; Treap[o].lson=Treap[x].rson; Treap[x].rson=o; pushup(o); pushup(x); o=x;}void insert(int val,int num,int &o){ if(!o){ o=getnew(val,num); return; } Treap[o].sz++; if(val<=Treap[o].val){ insert(val,num,Treap[o].lson); if(Treap[Treap[o].lson].ran
Treap[Treap[o].lson].sz+1) return query(val-Treap[Treap[o].lson].sz-1,Treap[o].rson); else return query(val,Treap[o].lson);}void dfs(int &o,int to){ if(!o) return; insert(Treap[o].val,Treap[o].num,root[to]); dfs(Treap[o].lson,to); dfs(Treap[o].rson,to); throwin(o); o=0;}int main(){ scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&w_p[i]),fa[i]=i,insert(w_p[i],i,root[i]); for(int i=1;i<=m;i++){ int a,b; scanf("%d %d",&a,&b); if(find(a)!=find(b)){ if(Treap[find(a)].sz

转载于:https://www.cnblogs.com/dreagonm/p/10710644.html

你可能感兴趣的文章
js动态插入css或者js文件
查看>>
paper 155:face/head pose estimation
查看>>
python基础(八)生成器,迭代器,装饰器,递归
查看>>
get content of all input tag
查看>>
nodejs 回调地狱解决 promise async
查看>>
Django rest framework(8)---- 视图和渲染器
查看>>
UIPickView简单Demo
查看>>
铁大FaceBook的使用体验副本
查看>>
Android--简单的三级菜单
查看>>
java10-异常处理
查看>>
highcharts 条形图
查看>>
一个多项式问题
查看>>
Ansible 入门指南 - 安装及 Ad-Hoc 命令使用
查看>>
python练习七—P2P下载
查看>>
巨强大的免费LOGO在线制作工具
查看>>
_____________________背包——————————————————2546——————————————...
查看>>
zencart通过产品id 批量添加推荐产品
查看>>
实习第六天
查看>>
Careercup | Chapter 4
查看>>
@Value的使用
查看>>