cid=28982#problem/I 给你一棵有边权的树,有两个操作:一个操作是输出l到r点之间的最大的边权,另一个操作是修改某条边的权值。 这题是树链剖分的简单模版题,代码如下: 1//修改单边权2#include <iostream>3#include <cstdio>4#include <cstring>5usingnamespacestd;6constintMAXN = 1e4 +10;7struct...
树链剖分2——边权改点权 实验对象——2013 noip day1 T3 本来可以直接用倍增lca解决。。但是我比较的扯淡。。所以用树链剖分来搞 和普通点权不同的是,对于一颗树来说,每一个点的点权被定义为他的父亲到他的边权,所以与一般的树链剖分相比,最后统一到一条链上时,线段树维护的一边端点要加1。。其他的...
56intquery(into,intl,intr,intql,intqr)57{58intmid=l+(r-l)/2,temp=0;59if(ql<=l&&qr>=r)returnmaxv[o];60if(ql<=mid) temp=query(o*2,l,mid,ql,qr);61if(qr>mid) temp=max(temp,query(o*2+1,mid+1,r,ql,qr));62returntemp;63}64intchange(intl,intr)65{66inttemp,mm=0;67...
树链剖分模版题,求和,修改单边权。 1#include <iostream>2#include <cstdio>3#include <algorithm>4#include <cstring>5usingnamespacestd;6typedeflonglongLL;7constintMAXN = 5e4 +10;8structEDGE {9intto , next;10LL cost;11}edge[MAXN <<1];12intfrom[MAXN] , to[MAXN] , head[MAXN] , ...
树链边权剖分的模版题,修改单边权和求和。 1//#pragma comment(linker, "/STACK:102400000,102400000")2#include <iostream>3#include <cstdio>4#include <cstring>5usingnamespacestd;6constintMAXN = 1e5 +5;7structEDGE {8intnext, to, cost;9}edge[MAXN <<2];10inthead[MAXN], tot;11intfrom...