ZJOI2004 樹的果實

2021-07-27 19:42:42 字數 1806 閱讀 9214

森林中生長著許多奇特的果樹,它們不僅外形獨特,其果實更是可口。這天,兩隻小蟲nileh和nixed決定一起分享一顆果樹。他們從早晨一直辛勤工作到下午,終於把這顆果樹鋸倒。他們觀察著這顆果樹,果樹開始端是露出地面的根部,接著像其他果樹一樣,有著諸多分叉(如圖所示就是一顆果樹),在每個分叉處生長著果實,自然nileh和nixed的食物就是這些果實了!他們準備把果樹分成兩部分,每個蟲蟲得到各自的一部分,而分果樹的方法就是選擇乙個分叉點,蟲蟲將他們咬斷(自然分叉點上的果實也被扔掉了),這樣果樹就變成了兩個部分(每個部分不一定是連在一起的):分叉點上面的部分和分叉點下面的部分。nileh和nixed就會各自選乙個部分吃啦!比如對於左邊這顆果樹,如果他們咬掉藍色的果子,那麼就被分為紅色和黃色的兩個部分。

考慮到被咬掉的果子會被浪費,他們想盡可能的減少浪費,於是蟲蟲給每個果子乙個美味值,對於每個果子,他們決定計算如果咬掉這個果子,上面部分、下面部分和從樹根到這個分叉點的路徑中比這個果子更美味的果子各有多少個。他們以此來選擇最終要被咬掉的果子是哪乙個。遺憾的是果樹可能很龐大,而小蟲幾乎是不會計算的,身為程式設計師的你幫幫他們吧。

輸入檔案第一行乙個整數n(n<=10^5)表示樹的分叉數(包括樹根)。

輸入檔案的第i(2<=i<=n)行乙個數pi,表示分叉i的上一級分叉的編號(pi輸入檔案的第n+i(1<=i<=n)行乙個正整數ai,表示生長在i號分叉點上的果實的美味值。(每個果子的美味值不相等)

輸出共n行,每行三個數,分別表示咬掉第i個果實後上面部分、下面部分、從樹根到這個分叉點的路徑中比它美味的果實數。

2 0 0

0 0 0

0 3 1

0 1 1

樹上除其子孫節點外比該節點大的節點總數:直接排序,在待統計節點前的與該節點權值不同的個數再減去問題1的答案即為所求。

從根節點到該節點路徑中比該節點大的節點總數:以權值為關鍵字構造線段樹(若權值大可行離散化處理)

那麼我們如何保證當前列表中的元素權值都比k的權值大呢?

我們重新組織資料:所有元素按從大到小的順序排序。然後依次處理每乙個元素:先取得所在區間的元素個數,再將該元素插入。

我們乙個很巧妙的方法:從大到小地向線段樹裡面加入元素,然後統計區間個數。

**

#include #include #include #include #include using namespace std;

const int maxn=100000+10;

struct t

}a[maxn];

int ans1[maxn];

int ans2[maxn];

int ans3[maxn];

int num[maxn];

int rank[maxn];

int s[maxn<<2]=;

int list[maxn]=;

int n=0;

int pla[maxn];

vectorc[maxn];

int v[maxn];

int n;

int size[maxn]=;

inline int lowbit(int x)

inline void add(int x,int nu)

inline int sum(int x)

inline void dfs(int x)

else if(l!=r){

int ans=0;

int mid=(l+r)>>1;

if(mid>=ql)

ans+=summ(o<<1,l,mid);

if(mid

ZJOI2004 沼澤鱷魚

給定乙個無向圖,以及起點s和終點t。每單位時間可以從乙個點走向聯通的另乙個點,問從起點s出發,經過k單位時間到達終點t的方案總數。最多50個點,k小於等於10 9。另 某一週期 週期時間為2,3或4 內一些點不能走到。到達某一點的方案總數,需要想到由加法原理進行遞推。記f u,k 為k秒後到達u點的...

ZJOI 2004 嗅探器 題解

題目傳送門 題目大意 給出一張無向圖以及兩個點 stst st和 eded ed,找出乙個編號最小的並且在所有st 到 ed 的路徑上的點。顯然這個點是乙個割點嘛。於是我們找出所有滿足要求的割點中編號最小的即可。具體就看 吧 include include define maxn 110 int n...

HNOI2004 樹的計數

hnoi2004 樹的計數 這道題資料水的一匹我無話可說,謎之錯誤 陣列賦值的時候乙個下標寫錯了變數 居然只wa了一組。寫這道題關鍵需要知道prufer序列以及cayley定理。prufer數列,可以用來解一些關於無根樹計數的問題。prufer數列是一種無根樹的編碼表示,對於一棵n個節點帶編號的無根...