3631 JLOI2014 松鼠的新家

2021-08-07 22:14:52 字數 829 閱讀 9146

題目鏈結

題目大意:給定一棵無根樹和乙個序列,在這個序列上依次遍歷,求每個點的訪問次數題解

:裸的樹

上差分,

但是根據

題意,前

一次的路

徑的結尾

就是下一

次路徑的

開頭,相

鄰兩次走

的路徑會

有乙個點

重複計算

,當然第

一次不會

重複,所

以把差分

陣列ch

a[a[

i]]−

−,2≤

i≤n

我的收穫:……

#include 

#include

#include

using

namespace

std;

const

int m=300005;

const

int l=20;

int n,t,head[m],a[m];

int cha[m],fa[m][l+1],dep[m];

struct edgee[m*2];

void add(int u,int v)

void dfs(int x,int f)

}int lca(int x,int y)

void solve(int x,int y)

void pushdown(int x,int f)

}void work()

void init()

int main()

3631 JLOI2014 松鼠的新家

樹剖裸題。每次將a i 1 到a i 的路徑都加一,輸出時除了a 1 其他都減一即可。ps 線段樹小技巧 如本題有訪問所有葉子節點的值。只要把整棵樹遍歷一遍,訪問到葉子是記錄下就可以了,o n 然而並沒什麼用 code include include include includeusing nam...

Bzoj3631 JLOI2014 松鼠的新家

solution 先考慮在序列上的做法。注意到是先處理完所有修改後才做詢問,那麼每次區間加上乙個數時就只須在左右端點分別打上乙個 和 的標記,最後詢問時將整個序列從左到右掃一遍即可。樹上同理。include include include include using namespace std co...

BZOJ3631 JLOI2014 松鼠的新家

題目大意 從編號1到n遍歷圖 中間經過點不算遍歷過 求每個點經過了幾次 樹剖,每次i到i 1都相當於一次鏈上修改,最後單點查詢就行。include include include include define n 300009 define inf 0x7fffff define ll long l...