點選開啟鏈結
題意:給個樹和樹上的權值,兩個操作,q u v,問u到v的邊上的最大權值,c u v,將第u條邊的權值改為v
思路:今天學了學樹鏈剖分,這題是個檢驗模版的題目,理論我是解釋不清楚的,自己在九野聚聚那學來的乙份模版
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int inf=0x3f3f3f3f;
const ll inf=0x3f3f3f3f3f3f3f3fll;
const int maxn=10010;
int fa[maxn],siz[maxn],son[maxn],w[maxn],p[maxn],dep[maxn],fp[maxn];
//fa為父節點,siz為子節點中siz最大的,dep為深度,son為重兒子,w表示**段樹中的位置
int max1[maxn<<2];
int tree_id,n;
vectorg[maxn];
void dfs1(int u,int ff,int deep)
}void dfs2(int u,int ff)
int query(int l,int r,int le,int ri,int node)
int getans(int u,int v)
int u[maxn],v[maxn],c[maxn];
int main()
while(1)
}return 0;
}
SPOJ375 樹鏈剖分
題目 query on a tree 題意 給定一棵樹,告訴了每條邊的權值,然後給出兩種操作 1 把第i條邊的權值改為val 2 詢問a,b路徑上權值最大的邊 分析 本題與hdu3966差不多,區別就是 hdu3966是告訴樹中點權的值,這裡是邊權。所以我們可以轉化,用邊的孩子節點來表示該邊。inc...
spoj375 樹鏈剖分
第一次寫樹鏈剖分的題目,下面說下我對樹鏈剖分的理解 以spoj為例,題意是給你一棵樹,有兩種操作,一種是修改某條邊的權值,一種是詢問節點a到節點b之間的路徑上所有邊的最大路徑。處理以上所有的資訊只需要兩個dfs就可以 第乙個dfs,dfs1處理father,size,depth,son 如下 voi...
SPOJ375 樹鏈剖分
題目 query on a tree 題意 給定一棵樹,告訴了每條邊的權值,然後給出兩種操作 1 把第i條邊的權值改為val 2 詢問a,b路徑上權值最大的邊 分析 本題與hdu3966差不多,區別就是 hdu3966是告訴樹中點權的值,這裡是邊權。所以我們可以轉化,用邊的孩子節點來表示該邊。inc...