【bzoj3545】peaks
离线一下,动态开点+线段树合并,然后权值线段树上询问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的更多相关文章
- 【BZOJ3545】Peaks(Kruskal重构树 主席树)
题目链接 大意 给出有\(N\)个点\(M\)条边的一张图,其中每个点都有一个High值,每条边都有一个Hard值. 再给出\(Q\)个询问:\(v\) \(x\) \(k\) 每次询问查询从点\(v ...
- 【bzoj3545】[ONTAK2010]Peaks 线段树合并
[bzoj3545][ONTAK2010]Peaks 2014年8月26日3,1512 Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路 ...
- 【BZOJ3551】Peaks加强版(Kruskal重构树,主席树)
[BZOJ3551]Peaks加强版(Kruskal重构树,主席树) 题面 BZOJ Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相 ...
- 【BZOJ3545】 [ONTAK2010]Peaks
BZOJ3545 [ONTAK2010]Peaks Solution 既然会加强版,直接把强制在线的操作去掉就好了. 代码实现 #include<stdio.h> #include< ...
- 【BZOJ3551】【BZOJ3545】 【ONTAK2010】 Peaks (kruskal重构树+主席树)
Description 在\(Bytemountains\)有\(~n~\)座山峰,每座山峰有他的高度\(~h_i~\). 有些山峰之间有双向道路相连,共\(~m~\)条路径,每条路径有一个困难值 ...
- 【JZOJ3635】【BOI2012】Peaks
╰( ̄▽ ̄)╭ 有一个居住在多山岛屿的登山家,已经攀上了一座山峰,并且要攀爬另外一座更高的山峰. 更精确地说,岛上的每一点都有一个大于零的海拔(海面的海拔为零),并且如果登山家位于海拔Ei的山峰上,那 ...
- 【BZOJ3551】[ONTAK2010]Peaks加强版 最小生成树+DFS序+主席树
[BZOJ3545][ONTAK2010]Peaks Description 在Bytemountains有N座山峰,每座山峰有他的高度h_i.有些山峰之间有双向道路相连,共M条路径,每条路径有一个困 ...
- 【转载】MATLB绘图
原文地址:http://www.cnblogs.com/hxsyl/archive/2012/10/10/2718380.html 作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供 ...
- 【OS】NMON的简介和使用
[OS]NMON的简介和使用 目前NMON已开源,以sourceforge为根据地,网址是http://nmon.sourceforge.net. 1. 目的 本文介绍操作系统监控工具Nmon的概念. ...
随机推荐
- 【bzoj2502】清理雪道 有上下界最小流
题目描述 滑雪场坐落在FJ省西北部的若干座山上. 从空中鸟瞰,滑雪场可以看作一个有向无环图,每条弧代表一个斜坡(即雪道),弧的方向代表斜坡下降的方向. 你的团队负责每周定时清理雪道.你们拥有一架直升飞 ...
- 【bzoj1010】[HNOI2008]玩具装箱toy 斜率优化dp
题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1...N的N件玩具, ...
- Python单例模式的四种方法
在这之前,先了解super()和__new__()方法 super()方法: 返回一个父类或兄弟类类型的代理对象,让你能够调用一些从继承过来的方法. 它有两个典型作用: a. 在单继承的类层次结构中, ...
- 算法训练 Bus Tour
问题描述 想象你是一个在Warsaw的游客,而且预订了一次乘车旅行,去城镇外看一些令人惊异的景点.这辆公共汽车首先围绕城镇行驶一段时间(一段很长的时间,由于Warsaw是一个大城市),把在各自旅馆的人 ...
- 【题解】CF#855 G-Harry Vs Voldemort
个人感觉挺有意思的,然而被颜神D无聊惹(- ̄▽ ̄)- 这题我们可以首先试图去统计以每一个点作为 w 点所能对答案造成的贡献是多少.不难发现,当且仅当 u 和 v 都在 w 所在边双的一侧的时候不能构成 ...
- 第一次BC
BestCoder Round #90 1001 Kblack loves flag 太弱只写了这一道水题. 首先这个题面就是,完全不知道它在说什么.开始5mins后我还完全不知道这个题想要表达什么. ...
- bzoj1690:[Usaco2007 Dec]奶牛的旅行(分数规划+spfa判负环)
PS:此题数组名皆引用:戳我 题目大意:有n个点m条有向边的图,边上有花费,点上有收益,点可以多次经过,但是收益不叠加,边也可以多次经过,但是费用叠加.求一个环使得收益和/花费和最大,输出这个比值. ...
- [LeetCode] 10. Regular Expression Matching ☆☆☆☆☆
Implement regular expression matching with support for '.' and '*'. '.' Matches any single character ...
- 【网络】RFC1245-OSPF Protocol Analysis
OSPF协议分析 摘要 这是OSPF协议的两份报告中的第一份,这些报告是因特网工程指导组要求的,是用来将一个因特网协议写成标准草案的.OSPF是一个TCP/IP协议族中的一个的路由协议,被设计用于一个 ...
- 精通BIRT:Eclipse商务智能报表工具开发实践指南
http://blog.csdn.net/birtbird/article/details/8935520 [置顶] 精通BIRT:Eclipse商务智能报表工具开发实践指南 分类: BIRT 201 ...