P6329 模板 點分樹 震波

2021-10-05 19:02:15 字數 2506 閱讀 9688

題目連線

關於點分樹的一些地方今天終於弄明白了,這個題理解的還可以,就是有點卡常,調了好久還是跑的很慢。。。。。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define pr make_pair

#define pb push_back

//#define lc (cnt<<1)

//#define rc (cnt<<1|1)

using

namespace std;

char buffer[

100001],

*s,*t;

inline

char

get_char()

return

*s++;}

inline

intread()

const

int inf=

0x3f3f3f3f

;const ll lnf=

0x3f3f3f3f3f3f3f3f

;const

double dnf=

1e15

;const

int mod=

1e9+7;

const

double eps=

1e-8

;const

int maxn=

100100

;int n,m;

int head[maxn]

,ver[maxn<<1]

,nt[maxn<<1]

,tot=1;

int a[maxn]

;void

add(

int x,

int y)

int d[maxn]

,id[maxn]

,rk[maxn<<1]

,dd[maxn<<1]

;int f[maxn<<1]

[20],_log[maxn<<1]

;int tcnt=0;

void

dfs(

int x,

int fa)

}voidst(

void

)int t=_log[tcnt]+1

;for

(int j=

1;j<=t;j++)}

intlca

(int x,

int y)

intdis

(int x,

int y)

int maxpart[maxn]

,si[maxn]

,fa[maxn]

,sit[maxn]

;bool ha[maxn]

;int root,maxsi;

void

dfs_size

(int x,

int fa)

}void

dfs_root

(int nowroot,

int x,

int fa)

for(

int i=head[x]

;i;i=nt[i])}

void

dfs_for_tree

(int x,

int f)

}int cnt=0;

int rt1[maxn]

,rt2[maxn]

;struct node

t[maxn<<7]

;int

newnode

(void

)void

change

(int

&p,int l,

int r,

int pos,

int val)

intask

(int p,

int l,

int r,

int askl,

int askr)

void

change

(int x,

int val)

}int

ask(

int x,

int k)

return ans;

}void

init

(void

)int

main

(void

)init()

;int last=

0,op;

for(

int i=

1;i<=m;i++

)return0;

}

洛谷P6329 模板 點分樹 震波

在一片土地上有 n 個城市,通過 n 1 條無向邊互相連線,形成一棵樹的結構,相鄰兩個城市的距離為 1 其中第 i 個城市的價值為 value i 不幸的是,這片土地常常發生 並且隨著時代的發展,城市的價值也往往會發生變動。0 x k表示發生了一次 震中城市為 x 影響範圍為 k 所有與 x 距離不...

Luogu6329 模板 點分樹 震波

終於寫了點分樹,iee 資料範圍 n,m le 10 5 權值範圍是 1,10 4 洛谷時限 2s。首先點分治可以用來解決路徑問題,因為 u,v 在點分樹上的 lca 一定在原樹路徑上,同時保證了深度 log n 如果不帶修的話,首先每個點維護乙個 vector,下標為該點在點分樹上的子樹到該點的距...

BZOJ3730 點分樹 震波

鏈結自己找,bzoj還沒開 也很顯然是點分樹維護,對每個點開兩個樹狀陣列,維護點分樹上子樹之和,然後修改詢問仍然暴力爬樹,詢問也是用兩個樹狀陣列作差消掉當前子樹影響 code include using namespace std inline intread while isdigit ch re...