离线一下,动态开点+线段树合并,然后权值线段树上询问kth即可。

#include<bits/stdc++.h>
const int N=;
const int M=*;
using namespace std;
int n,m,q,ans[N],rt[N],a[N],fa[N],cnt=;
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
struct Edge{
int u,v,w;
bool operator <(const Edge &x)const{return w<x.w;}
inline void init(){u=read();v=read();w=read();}
}G[N];
struct Query{
int v,x,k,id;
inline void init(int i){v=read();x=read();k=read();id=i;}
bool operator < (const Query &a)const{return x<a.x;}
}Q[N];
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
struct Segment_Tree{
int lc[M],rc[M],val[M];
void ins(int &o,int l,int r,int q){
if(!o)o=++cnt;val[o]++;
if(l==r)return;int mid=(l+r)>>;
if(q<=mid)ins(lc[o],l,mid,q);
else ins(rc[o],mid+,r,q);
}
int merge(int x,int y,int l,int r){
if(!x)return y;if(!y)return x;
if(l==r){val[x]+=val[y];return x;}
int mid=(l+r)>>;
lc[x]=merge(lc[x],lc[y],l,mid);
rc[x]=merge(rc[x],rc[y],mid+,r);
val[x]=val[lc[x]]+val[rc[x]];
return x;
}
int kth(int o,int l,int r,int q){
if(l==r)return l;
int mid=(l+r)>>;
if(val[rc[o]]>=q)return kth(rc[o],mid+,r,q);
return kth(lc[o],l,mid,q-val[rc[o]]);
}
}T;
inline void uni(int u,int v){
int x=find(u),y=find(v);
if(x==y)return;
rt[x]=T.merge(rt[x],rt[y],,1e9);
fa[y]=x;
}
int main(){
n=read();m=read();q=read();
for(int i=;i<=n;i++){
a[i]=read();fa[i]=i;T.ins(rt[i],,1e9,a[i]);
}
for(int i=;i<=m;i++)G[i].init();
sort(G+,G+m+);
for(int i=;i<=q;i++)Q[i].init(i);
sort(Q+,Q+q+);
for(int i=,j=;i<=q;i++){
while(j<=m&&G[j].w<=Q[i].x)uni(G[j].u,G[j].v),++j;
int t=rt[find(Q[i].v)];
ans[Q[i].id]=T.val[t]>=Q[i].k?T.kth(t,,1e9,Q[i].k):-;
}
for(int i=;i<=q;i++)printf("%d\n",ans[i]);
}

【bzoj3545】peaks的更多相关文章

  1. 【BZOJ3545】Peaks(Kruskal重构树 主席树)

    题目链接 大意 给出有\(N\)个点\(M\)条边的一张图,其中每个点都有一个High值,每条边都有一个Hard值. 再给出\(Q\)个询问:\(v\) \(x\) \(k\) 每次询问查询从点\(v ...

  2. 【bzoj3545】[ONTAK2010]Peaks 线段树合并

    [bzoj3545][ONTAK2010]Peaks 2014年8月26日3,1512 Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路 ...

  3. 【BZOJ3551】Peaks加强版(Kruskal重构树,主席树)

    [BZOJ3551]Peaks加强版(Kruskal重构树,主席树) 题面 BZOJ Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相 ...

  4. 【BZOJ3545】 [ONTAK2010]Peaks

    BZOJ3545 [ONTAK2010]Peaks Solution 既然会加强版,直接把强制在线的操作去掉就好了. 代码实现 #include<stdio.h> #include< ...

  5. 【BZOJ3551】【BZOJ3545】 【ONTAK2010】 Peaks (kruskal重构树+主席树)

    Description ​ 在\(Bytemountains\)有\(~n~\)座山峰,每座山峰有他的高度\(~h_i~\). 有些山峰之间有双向道路相连,共\(~m~\)条路径,每条路径有一个困难值 ...

  6. 【JZOJ3635】【BOI2012】Peaks

    ╰( ̄▽ ̄)╭ 有一个居住在多山岛屿的登山家,已经攀上了一座山峰,并且要攀爬另外一座更高的山峰. 更精确地说,岛上的每一点都有一个大于零的海拔(海面的海拔为零),并且如果登山家位于海拔Ei的山峰上,那 ...

  7. 【BZOJ3551】[ONTAK2010]Peaks加强版 最小生成树+DFS序+主席树

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

  8. 【转载】MATLB绘图

    原文地址:http://www.cnblogs.com/hxsyl/archive/2012/10/10/2718380.html 作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供 ...

  9. 【OS】NMON的简介和使用

    [OS]NMON的简介和使用 目前NMON已开源,以sourceforge为根据地,网址是http://nmon.sourceforge.net. 1. 目的 本文介绍操作系统监控工具Nmon的概念. ...

随机推荐

  1. Windows的三种截屏方法

    「发表于知乎」戳

  2. Dom样式操作-属性操作

    1. 对样式进行操作: 1) 以样式(C1,C2等)为最小单位进行修改. className, classList, (以列表形式获得) classList.add("C2"), ...

  3. python-输出颜色显示

    显示颜色格式:\033[显示方式;字体色;背景色m...主题内容hello world...\033[0m \033 从这里开始标颜色................................. ...

  4. 项目管理---git----快速使用git笔记(三)------coding.net注册和新建项目(远程仓库)

    我们在第一章已经了解了github和coding.net的区别: github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开. codin ...

  5. 学习操作Mac OS 之 使用brew安装软件

    安装brew软件 安装方法:  在Mac中打开Termal:  输入命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercont ...

  6. caffe中使用crop_size剪裁训练图片

    layer { name: "data" type: "Data" top: "data" top: "label" i ...

  7. 1143: [CTSC2008]祭祀river(最长反链)

    1143: [CTSC2008]祭祀river 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1143 Description: 在遥远的 ...

  8. phantomjs 无法打开https网站

    最近一直在用phantomjs 自动登陆并爬取一些数据,突然发现爬取https类型的网站的时候无法正常操作了 困扰了两天的问题在经过google和stackoverflow的一番搜索后发现原来Phan ...

  9. 从samsung提供内核进行移植

    1.尝试编译分析结果 配置编译下载尝试 (1)检查Makefile中ARCH和CROSS_COMPILE(2)make xx_defconfig(3)make menuconfig(4)make -j ...

  10. echarts.js中的图表大小自适应

    echarts的图表,如果父级容器的height/width属性设置为百分比的形式,那么echarts就会warning,且不能正常的生成图表.所以div容器的高度宽度必须指定为px,这设计不知道是为 ...