11 02 猴猴的比賽

2021-09-29 06:45:44 字數 1191 閱讀 6625

猴猴今天要和小夥伴猩猩比賽爬樹,為了公平不碰撞,猴猴和猩猩需要在不同的樹上攀爬。於是它們選了兩顆節點數同為n的樹,並將兩棵樹的節點分別以1~n標號(根節點標號為1),但兩棵樹的節點連線方式不盡相同。

現在它們決定選擇兩個標號的點進行比賽。為了方便統計,規定它們比賽中必須都向上爬。(即選定的賽段節點u→節點v都必須指向葉子方向)請你求出這兩棵樹上共有多少對節點滿足比賽的需求。

先求出第一棵樹的dfs

dfsdf

s序,得到每個節點本身的編號以及子樹的編號範圍[li

,ri]

[l_i,r_i]

[li​,r

i​] 。 用樹狀陣列來維護後面的計算。 在dfs

dfsdf

s處理第二棵樹時,我們每處理完乙個節點,就將該節點在第一棵樹中的對應編號設為1

11,處理完所有子節點後,查詢編號區間[li

,ri]

[l_i,r_i]

[li​,r

i​]的區間和,即當前子樹下,有多少個節點在樹1

11中也是當前節點的子孫節點。維護計數即可。

#include

#include

using

namespace std;

const

int n=

100000+5

;int n,cnt,ls[n]

,next[

2*n]

,v[2

*n];

inline

void

add(

int x,

int y)

int id,dfn[n]

,siz[n]

;void

pre(

int x,

int fa)

}int t[n]

,ans[n]

;void

change

(int x,

int num)

intask

(int x)

void

dfs(

int x,

int fa)

ans[x]

=ask

(dfn[x]

+siz[x]-1

)-ask(dfn[x]-1

);}int

main()

11 02 猴猴吃蘋果

走過的點的權值清零,那麼答案是唯一的,而且終點一定會是葉子節點 那麼我們設初始節點為根節點,先遍歷一次樹,把所有葉子節點記錄下來,以及每個點的父節點,按照深度排序 然後讓每個點沿著父親往上跳,每跳一步答案增加1,遇到根節點或者走過的節點就停止 遇到走過的點說明上面的點取過值了 include def...

11 02 猴猴吃香蕉

猴猴最愛吃香蕉了。每天猴猴出門都會摘很多很多的香蕉,每個香蕉都有乙個甜度,猴猴不一定要把所有的香蕉都吃掉,猴猴每天都有乙個心情值k,猴猴希望當天吃的香蕉滿足這麼乙個條件,這些香蕉的甜度乘積恰好等於k,但是猴猴並不知道有多少種方法,於是猴猴把這個問題交給你。揹包,依題目可得 只有k kk的約數才能作為...

51nod 猴猴的比賽

h yp erli nk hyperlink hyperl ink d es crip tion description descri ptio n 給定兩棵樹,求在兩棵樹同時滿足u uu是v vv的父親的對數 資料範圍 n 1 05 n leq 10 5 n 105sol utio nsoluti...