#include <cstdio>
#include <cstring>
#include <queue>
#include <set>
#include <stack>
#include <cstdlib>
#include <algorithm>
#include <time.h>
#include <vector>
#include <cmath>
using namespace std;
typedef long long LL;
typedef pair<int,int>pii;
const int N=5e4+;
const int S=1e5+;
const int INF=0x3f3f3f3f;
struct Edge{
int v,w,next;
}edge[N*];
int head[N],tot,root[N],n,q;
void add(int u,int v,int w){
edge[tot].v=v;
edge[tot].w=w;
edge[tot].next=head[u];
head[u]=tot++;
}
struct Node{
int l,r,v;
}o[N*];
int sz;
void add(int &rt,int l,int r,int x){
o[++sz]=o[rt];rt=sz;
++o[rt].v;
if(l==r)return;
int m=(l+r)>>;
if(x<=m)add(o[rt].l,l,m,x);
else add(o[rt].r,m+,r,x);
}
int ask(int x,int y,int z,int l,int r,int k){
if(l==r)return l;
int c1=o[o[x].l].v+o[o[y].l].v-*o[o[z].l].v;
int m=(l+r)>>;
if(c1>=k)ask(o[x].l,o[y].l,o[z].l,l,m,k);
else ask(o[x].r,o[y].r,o[z].r,m+,r,k-c1);
}
int fa[N][],d[N];
void dfs(int u,int f,int w){
fa[u][]=f;d[u]=d[f]+;
if(u!=)add(root[u]=root[f],,S,w);
for(int i=head[u];~i;i=edge[i].next){
int v=edge[i].v;
if(v==f)continue;
dfs(v,u,edge[i].w);
}
}
int lca(int u,int v){
if(d[u]<d[v])swap(u,v);
for(int t=d[u]-d[v],i=;t;t>>=,++i)
if(t&)u=fa[u][i];
if(u==v)return u;
for(int i=;i>=;--i){
if(fa[u][i]!=-&&fa[u][i]!=fa[v][i])
u=fa[u][i],v=fa[v][i];
}
return fa[u][];
}
int main(){
while(~scanf("%d%d",&n,&q)){
tot=sz=;
memset(head,-,sizeof(head));
for(int i=;i<n;++i){
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
++w;
add(u,v,w),add(v,u,w);
}
memset(fa,-,sizeof(fa));
dfs(,,);
for(int j=;j<=;++j){
for(int i=;i<=n;++i){
if(fa[i][j-]!=-)fa[i][j]=fa[fa[i][j-]][j-];
}
}
while(q--){
int u,v;
scanf("%d%d",&u,&v);
int tp=lca(u,v);
int k=o[root[u]].v+o[root[v]].v-*o[root[tp]].v;
if(k&)k=k/+;
else k/=;
printf("%d\n",ask(root[u],root[v],root[tp],,S,k)-);
}
}
return ;
}

FZU 2237 中位数 主席树 树上k大的更多相关文章

  1. poj2104 主席树 区间K大 在线 无修改

    关于主席树: 主席树(Chairman Tree)是一种离线数据结构,使用函数式线段树维护每一时刻离散之后的数字出现的次数,由于各历史版本的线段树结构一致,可以相减得出区间信息,即该区间内出现的数字和 ...

  2. BZOJ2588 主席树 + 树上差分

    https://www.lydsy.com/JudgeOnline/problem.php?id=2588 题意:强制在线的询问树链权值第K小(无修) 这种类似于第K小的题,一般容易想到主席树,但是树 ...

  3. poj2104 划分树 区间K大 在线 无修改

    博主sbit....对于高级数据结构深感无力,然后这些东西在OI竟然烂大街了,不搞就整个人都不好了呢. 于是我勇猛的跳进了这个大坑 ——sbit 区间K大的裸题,在线,无修改. 可以用归并树(\(O( ...

  4. 【Luogu】P3384主席树模板(主席树查询K小数)

    YEAH!我也是一个AC主席树模板的人了! 其实是个半吊子 我将尽量详细的讲出我的想法. 主席树太难,我们先搞普通线段树好了 普通线段树怎么做?我的想法是查询K次最小值,每次查完把查的数改成INF,查 ...

  5. COJ 1011 WZJ的数据结构(十一)树上k大

    题解:主席树&DFS序. PS:为什么我一开始Wa了N发 是因为有一个左区间我写成[L,M+1]了.......................... #include<iostream ...

  6. Permutation UVA - 11525(值域树状数组,树状数组区间第k大(离线),log方,log)(值域线段树第k大)

    Permutation UVA - 11525 看康托展开 题目给出的式子(n=s[1]*(k-1)!+s[2]*(k-2)!+...+s[k]*0!)非常像逆康托展开(将n个数的所有排列按字典序排序 ...

  7. 树上前k大的包含不重复结点的长链

    一棵树,不一定是二叉树,在每个结点最多只属于一条链的情况下,处理出其中最长的前k个的长度. 最近训练赛做到两道题了,有必要总结一下. 不过我不知道是否有更专门的叫法. 借鉴了这位大佬的博客:https ...

  8. F. Greedy Sequence(主席树区间k的后继)(The Preliminary Contest for ICPC Asia Nanjing 2019)

    题意: 查找区间k的后继. 思路: 直接主席树. #define IOS ios_base::sync_with_stdio(0); cin.tie(0); #include <cstdio&g ...

  9. bzoj4448 [Scoi2015]情报传递 主席树+树上差分

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4448 题解 练习一下主席树的基础练习题找回感觉. 对于每一次询问,第一问显然随便做. 第二问的 ...

随机推荐

  1. 排序算法ONE:选择排序SelectSort

    /** *选择排序: * 对冒泡排序的一个改进 * 进行一趟排序时,不用每一次都交换,只需要把最大的标示记下 * 然后再进行一次交换 */ public class SelectSort { /** ...

  2. 由Double类型数据到数据的格式化包java.text

    需求:Double类型数据截取操作保留两位小数 解决方案: java.text.DecimalFormat df =new java.text.DecimalFormat("#.00&quo ...

  3. Cloudcraft: 云架构图形可视化(智能AWS图表)

    Cloudcraft: 云架构图形可视化(智能AWS图表) 2016.09.11 官方网站: https://cloudcraft.co/ Cloudcraft是一个Web应用,用图形表示各种AWS服 ...

  4. JS拖拽原理

    实现拖拽效果主要跟鼠标的三个事件有关: onmousedown : 选择要拖拽的元素 onmousemove : 移动元素 onmouseup : 释放元素 三个事件的关系: obj.onmoused ...

  5. 不相交集合ADT

    不相交集合数据结构保持一组不相交的动态集合S={S1,S2,...,SK},每个集合通过一个代表来识别,代表即集合中的某个成员. 如果x表示一个对象,不相交集合支持以下操作: MAKE-SET(x): ...

  6. hdu 5512 Pagodas 扩展欧几里得推导+GCD

    题目链接 题意:开始有a,b两点,之后可以按照a-b,a+b的方法生成[1,n]中没有的点,Yuwgna 为先手, Iaka后手.最后不能再生成点的一方输: (1 <= n <= 2000 ...

  7. Asp.Net检查HTML是否闭合以及自动修复

    1.htmlCheck类 using System; using System.Collections.Generic; using System.Text; using System.Collect ...

  8. C#委托的语法

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using Delegate; na ...

  9. 取得inputStream的长度

    1.网络下载文件 URL url = new URL(strUrl); HttpURLConnection httpconn = (HttpURLConnection)url.openConnecti ...

  10. web网页前端制作中的SEO方法

    在SEO盛行的今天到处都在谈优化,对于网站前端制作人员来说,有几点是跟SEO相关 的,也就是SEO站内优化中的一部分,下面总结几点: 1.title,.页面的标题,不用多说,这个必须有! 2.keyw ...