題目鏈結
題目大意:給定一棵無根樹和乙個序列,在這個序列上依次遍歷,求每個點的訪問次數題解
:裸的樹
上差分,
但是根據
題意,前
一次的路
徑的結尾
就是下一
次路徑的
開頭,相
鄰兩次走
的路徑會
有乙個點
重複計算
,當然第
一次不會
重複,所
以把差分
陣列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...