SPOJ 375 樹鏈剖分

2022-04-08 07:43:03 字數 893 閱讀 6052

點選開啟鏈結

題意:給個樹和樹上的權值,兩個操作,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...