排序以后,做并茶几+主席树合并维护,Orzstdcall,没想到权值线段树的合并竟然是O(nlogn)的...虽然他给我证明了一波,但是还是不是十分理解...听说是Cydiater给他讲的,Orz

#include<bits/stdc++.h>
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
struct one
{int x,id,y,v,f;};
one e[2200010];
int f1,f2,n,m,q,cnt=0,root[501000],hash[501000],fa[501000],a[501000],sum[6000000],l[6000000],r[6000000],ans[500100];
bool cmp(one aa,one bb){if(aa.v==bb.v)return aa.f<bb.f;else return aa.v<bb.v;}
void add(int &pre,int L,int R,int x)
{if(!pre)pre=++cnt;sum[pre]=1;if(L>=R)return;int mid=(L+R)>>1;if(x<=mid){add(l[pre],L,mid,x);}else {add(r[pre],mid+1,R,x);}
}
int getfather(int pp)
{if(pp==fa[pp])return pp;else return fa[pp]=getfather(fa[pp]);
}
int merge(int aa,int bb)
{if(!aa)return bb;if(!bb)return aa;if((!l[aa])&&(!r[aa])){sum[aa]+=sum[bb];return aa;}l[aa]=merge(l[aa],l[bb]);r[aa]=merge(r[aa],r[bb]);sum[aa]=sum[l[aa]]+sum[r[aa]];return aa;
}
int query(int pre,int L,int R,int x)
{if(L>=R)return L;int mid=(L+R)>>1;if(x<=sum[l[pre]])return query(l[pre],L,mid,x);else return query(r[pre],mid+1,R,x-sum[l[pre]]);
}
int main()
{//freopen("xf.in","r",stdin);//freopen("xf.out","w",stdout);scanf("%d%d%d",&n,&m,&q);for(int i=1;i<=n;i++)a[i]=read(),hash[i]=a[i];sort(hash+1,hash+n+1);for(int i=1;i<=m;i++){e[i].x=read();e[i].y=read();e[i].v=read();e[i].f=0;}for(int i=m+1;i<=m+q;i++){e[i].x=read();e[i].v=read();e[i].y=read();e[i].f=1;e[i].id=i-m;}sort(e+1,e+q+m+1,cmp);for(int i=1;i<=n;i++){int x=lower_bound(hash+1,hash+n+1,a[i])-hash;add(root[i],1,n,x);}for(int i=1;i<=n;i++)fa[i]=i;for(int i=1;i<=m+q;i++){if(!e[i].f){f1=getfather(e[i].x);f2=getfather(e[i].y);if(f1==f2)continue;fa[f1]=f2;root[f2]=merge(root[f1],root[f2]);}else{f1=getfather(e[i].x);if(sum[root[f1]]<e[i].y)ans[e[i].id]=-1;else ans[e[i].id]=hash[query(root[f1],1,n,sum[root[f1]]-e[i].y+1)];}}for(int i=1;i<=q;i++)printf("%d\n",ans[i]);return 0;
}

  

转载于:https://www.cnblogs.com/mybing/p/8613383.html

bzoj3545: [ONTAK2010]Peaks 主席树合并相关推荐

  1. [BZOJ3545][ONTAK2010]Peaks

    [BZOJ3545][ONTAK2010]Peaks 试题描述 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越 ...

  2. #3551. [ONTAK2010]Peaks加强版(kruskal 重构树 + 主席树)

    #3551. [ONTAK2010]Peaks加强版 我们要求从一个点出发经过困难值小于等于xxx的路径所能到达的山峰中第kkk高的是什么. 考虑按照边权升序,建议kruskalkruskalkrus ...

  3. [ONTAK2010] Peaks加强版 (kruskal重构树+主席树+倍增)

    Peaks description solution code description 在Bytemountains有N座山峰,每座山峰有他的高度h_i 有些山峰之间有双向道路相连,共M条路径,每条路 ...

  4. [ONTAK2010]Peaks【并查集+线段树合并】

    文章目录 分析 代码 传送门 在Bytemountains有NNN座山峰,每座山峰有他的高度hih_ihi​.有些山峰之间有双向道路相连,共MMM条路径,每条路径有一个困难值,这个值越大表示越难走,现 ...

  5. 洛谷 P3302 [SDOI2013]森林 主席树+启发式合并

    click here~:https://www.luogu.org/problem/P3302 emmm这个题是真的烦 一看题发现这题不是count on a tree的升级版么 如果一点思路没有的话 ...

  6. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...

    标签那么长是因为做法太多了... 题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277 (bzoj 3473) ...

  7. CodeForces - 484E Sign on Fence(主席树区间合并+二分)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,需要回答 mmm 次询问,每次询问的格式如下: lrkl\ r\ kl r k,需要回答区间 [l,r][l,r][l,r] 内,所有长度 ...

  8. 中石油训练赛 - Russian Dolls on the Christmas Tree(树上启发式合并/主席树)

    题目链接:点击查看 题目大意:给出一棵 n 个节点的树,以点 1 为根,现在对于每个节点作为根的子树求解:子树中有多少个编号不相交的连续子段,如:1 2 4 5 7,共有三个连续的段,分别为 [ 1 ...

  9. [SDOI2013]森林(树上主席树+启发式合并+lca)

    链接:https://ac.nowcoder.com/acm/problem/20577 来源:牛客网 题目描述 小Z有一片森林,含有N个节点,每个节点上都有一个非负整数作为权值.初始的时候,森林中有 ...

  10. 洛谷P7361:拜神(SA、二分、主席树、启发式合并)

    解析 很好的一道SA的题.(觉得完全可以评黑了啊qwq) 我一开始拿SAM和线段树硬做,不断修正最后发现自己无法在可接受复杂度内解决的问题,直接GG- 垃圾数据还骗到了50分 所以写一道题之前还是要先 ...

最新文章

  1. 项目感言--功能的模块化
  2. python udp客户端 服务器实现方式_python3实现UDP协议的简单服务器和客户端
  3. 静止的人如何看待高速运动的球?
  4. LeetCode 82 删除排序链表中的重复元素||-中等
  5. 使用ActiveMQ和HornetQ通过WebSocket通过STOMP轻松进行消息传递
  6. 刷排名优优软件_QQ群拉人了,排名后置了?申诉案例
  7. MyBatis多参数传递之混合方式——MyBatis学习笔记之十五
  8. 《测试类职位面试360度》
  9. adbe Air/flash swf中不能正常显示系统字体问题的解决方案
  10. deeplearning.ai——构建循环神经网络
  11. 第二百零二节,jQuery EasyUI,Layout(布局)组件
  12. TwinCAT 3 报警程序
  13. 雷达图按照权重和排名计算出每项得分,并且按照综合得分排序
  14. 常用Intent合集 Android
  15. 槑图秀秀 (初学JAVA第三篇)
  16. 仙境传说 第一章之四 卢渊*梦魇过后的情缘
  17. 结合MACD看现货白银价格走势图
  18. spring史上最全笔记
  19. 4.10nbsp;经济周期和经济危机
  20. NeuroSuites:神经科学在线计算平台

热门文章

  1. (转)Moblin V2活动映像安装详解
  2. webstorm 去点右边白线
  3. HDFS 命令深入浅出
  4. 数据库使用1--注意事项
  5. 通过千千静听歌词服务器下载歌词(Delphi版)
  6. python读取csv文件
  7. 基础教程之Running Man奔跑
  8. Spring AOP配置简单记录(注解及xml配置方式)
  9. 页面加载速度优化的建议
  10. 【Centos】【Python】【Flask】阿里云上部署一个 flask 项目