題意:
給你一棵樹,和樹上邊的權值,在有q組詢問a,b,問你從節點a->節點1的路徑上,不小於b的最大的邊的權值是多少,輸出
離線維護最大值線段樹即可
模板題
#includeusingview codenamespace
std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);--i)
#define ri(n) scanf("%d",&(n))
#define rii(n,m) scanf("%d%d",&n,&m)
#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define rs(s) scanf("%s",s);
#define ll long long
#define see(x) (cerr<
#define lson l,m,pos<<1
#define rson m+1,r,pos<<1|1
#define inf 0x3f3f3f3f
#define clr(a,v) memset(a,v,sizeof a)typedef pair
pii;
/////////////////////////////////
/const
int n=1e5+10
;int t[n<<2
],n,m;
void up(int
pos)
void build(int l,int r,int
pos)
int m=(l+r)>>1
; build(lson);build(rson);up(pos);
}void upnode(int x,int v,int l,int r,int
pos)
int m=(l+r)>>1
;
if(x<=m)upnode(x,v,lson);
else
upnode(x,v,rson);
up(pos);
}int qmax(int l,int r,int l,int r,int
pos)
intid[n],head[n],pos,cnt,top[n],fa[n],son[n],siz[n],dep[n],a,b,c;
struct
edge
edge[n
<<1
];void add(int a,intb);
head[a]=pos;
}void dfs1(int x,intf)}
void dfs2(int x,int
topf)
}int qmax(int x,int
y)
if(dep[x]>dep[y])swap(x,y);
ans=max(ans,qmax(id[x]+1,id[y],1,n,1
));
return
ans;
}void
init()
struct
node
s[n];
bool
cmp(node a,node b)
struct
edge2
edge2[n];
bool
cmp2(edge2 a,edge2 b)
intans[n];
intmain()
dfs1(
1,1);dfs2(1,1);build(1,n,1
); ri(m);
rep(i,
1,m)rii(s[i].x,s[i].y),s[i].id=i;
sort(s+1,s+1+m,cmp);sort(edge2+1,edge2+1+n-1
,cmp2);
int l=1
; rep(i,
1,m)
ans[s[i].id]=qmax(1
,s[i].x);
}rep(i,
1,m)
printf(
"%d\n
",ans[i]==0||ans[i]==-inf?-1
:ans[i]);
}return0;
}
Query on a tree 樹鏈剖分整理
樹鏈剖分整理 樹鏈剖分就是把樹拆成一系列鏈,然後用資料結構對鏈進行維護。通常的剖分方法是輕重鏈剖分,所謂輕重鏈就是對於節點 u的所有子結點v,size v 最大的v與u 的邊是重邊,其它邊是輕邊,其中 size v 是以v 為根的子樹的節點個數,全部由重邊組成的路徑是重路徑,根據 上的證明,任意一點...
樹鏈剖分 375 Query on a tree
樹鏈剖分並不是乙個複雜的演算法或者資料結構,只是能把一棵樹拆成鏈來處理而已,換一種說法,樹鏈剖分只是 資料結構 演算法在樹上的推廣,或者說,樹鏈剖分只是把樹hash到了幾段連續的區間上。主要參考kuangbin 以及 第二個其中的修改操作的解釋好像有問題,其例子中查詢11和10 的實際的遍歷和他的解...
樹鏈剖分 樹鏈剖分講解
好了,這樣我們就成功解決了對樹上修改查詢邊權或點的問題。下面放上 vector v maxn int size maxn dep maxn val maxn id maxn hson maxn top maxn fa maxn 定義 int edge 1,num 1 struct tree e ma...