套題T5 各種樹

2022-05-05 03:39:09 字數 3691 閱讀 7387

樹(tree)

【題目描述】

方方方種下了三棵樹,一年後,第一棵樹長出了n個節點。

方方方會向你提出m個詢問,每個詢問給出兩個數i,

j,你需要回答

i號節點和

j號節點在樹上的距離。

【輸入資料】

第一行兩個整數n,

m。接下來

n-1行每行兩個整數a,

b表示一條邊。接下來

m行每行兩個整數i,

j表示詢問。

【輸出資料】

m行,每行乙個整數表示答案。

【樣例輸入】

3 21 2

1 33 2

1 1【樣例輸出】

【資料範圍】

對於30%的資料,

n,m<=1000

。對於100%的資料,

n,m<=500000

。裸lca

//lca教程 

這道題和lca的關係:

對於這道題來說

假設區間是f[i,j]

最小值是__min

答案就是f[i]-__min + f[j]-__min

path就沒什麼用了

先寫rmq 然後dfs的時候 這道題資料很大 儲存成雙向鄰接表然後遍歷一邊就行了

#include #include 

#include

#include

using

namespace

std;

typedef vector

int> >vv;

void get_path(vector& path,const vv& t,const

int& cur,bool* vis,int depth,vector& t_depth,map&fr)

return;}

inline

void swap(int& a,int&b)

class

rmq

public

: rmq(

const vector&depth)

f=vectorint> >(n,vector(k+1

)); ini(depth,n,k);}}

int query(const

int& l,const

int&r);

};void rmq::ini(const vector& depth,const

int& n,const

int&k)

int rmq::query(const

int& l,const

int&r)

return get_min(f[l][k-1],f[r+1-(1

<

]);}

intmain()

vector

path(1,1),t_depth(1,1

);

bool* vis=new

bool[n+1

]; memset(vis,

0,n+1

); vis[

1]=1

; map

fr;fr[

1]=0

; get_path(path,t,

1,vis,1

,t_depth,fr);

rmq rmq(t_depth);

for (int i=0; ii)

return0;

}

view code

樹(tree2)

【題目描述】

方方方種下了三棵樹,兩年後,第二棵樹長出了n個節點,其中

1號節點是根節點。

方方方進行m次操作,每個操作為:

(1)給出兩個數i,

x,將第

i個節點的子樹中,與

i距離為斐波那契數的節點權值

+x(包括

i本身)。

(2)給出乙個數

i,求出第

i個節點的子樹中,與

i距離為斐波那契數的節點的權值和(包括

i本身)。

【讀入資料】

第一行兩個整數n,

m。接下來

n-1行每行兩個整數a,

b表示一條邊。接下來

m行每行第乙個數表示操作型別,接下來1或

2個數表示

i (,x)。

【讀出資料】

對於每個(2)操作,輸出一行乙個整數表示答案。

【樣例輸入】

5 31 2

2 33 4

4 51 1 1

1 2 2

2 4【樣例輸出】

【資料範圍】

對於30%的資料,

n,m<=1000

。對於100%的資料,

n,m<=100000

,|x|<=10^9

。樹(tree3)

【題目描述】

方方方種下了三棵樹,兩年後,第二棵樹長出了n個節點,其中

1號節點是根節點。

方方方使用魔法為每個節點按以下規則染色:

(1) 每個節點為紅色,黑色或白色。

(2) 對於每個葉節點i,有ri,

bi,wi三個引數,滿足

ri+bi+wi=1

。方方方分別以ri,

bi,wi的概率給

i染上紅色,黑色和白色。

(3) 對於每個非葉節點,設它的子樹大小為x,當它的子樹中的其它

x-1個節點都被染色後,對它進行染色。假設這

x-1個節點分別有r,

b,w個紅色、黑色和白色,那麼它被染成紅色、黑色、白色的概率分別為

r/(x-1)

,b/(x-1)

,w/(x-1)

。染色結束後,方方方按以下規則計算這棵樹的魔法值:

(1) 對於每個有序點對(i,j),如果它們的顏色集合為且i

是j的祖先,魔法值

+rb。

(2) 對於每個有序點對(i,j),如果它們的顏色集合為且i

是j的祖先,魔法值

+rw。

(3) 對於每個有序點對(i,j),如果它們的顏色集合為且i

是j的祖先,魔法值

+bw。

你需要求出魔法值的期望對998244353取模的結果。

【讀入資料】

第一行四個整數n,rb,

rw,bw,接下來

n-1行每行兩個整數a,

b表示一條邊。接下來

n行每行三個整數ri,

bi,wi,如果

i是葉子節點,保證

ri+bi+wi=1

,否則ri=bi=wi=0

。【讀出資料】

輸出魔法值的期望對998244353取模的結果。

【樣例讀入】

2 1 2 3

1 21 0 0

499122177 499122177 0

【樣例輸出】

【資料範圍】

對於10%的資料,

n<=10

。對於30%的資料,

n<=50

。對於另外20%的資料,

rb=rw=bw

。對於再另外20%的資料,每個葉子節點i滿足

ri=bi=wi

。對於100%的資料,

n<=1000

,0<=rb,rw,bw,ri,bi,wi<998244353

網路流24題之T5 圓桌問題

問題描述 假設有來自 n 個不同單位的代表參加一次國際會議。每個單位的代表數分別 nir 2,1,會議餐廳共有 m張餐桌,每張餐桌可容納 2,1 mic 個代表就餐。i i為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法 給出滿足要求的代表就餐方案。程式設計任務 對...

T5獨木舟上的旅行

t5獨木舟上的旅行 時間限制 1000 ms 記憶體限制 65535 kb 問題描述 進行一次獨木舟的旅行活動,獨木舟可以在港口租到,並且之間沒有區別。一條獨木舟最多只能乘坐兩個人,且乘客的總重量不能超過獨木舟的最大承載量。我們要儘量減少這次活動中的花銷,所以要找出可以安置所有旅客的最少的獨木舟條數...

未來人類T5 安裝win10,ubuntu雙系統

2.設定雙顯示卡模式,重啟時按f7選擇進入u盤啟動。3.進入安裝介面,選擇與windows共存模式安裝,不要連線網路更新,等待安裝。4.安裝結束後,重啟時按f2設定為獨顯模式。5.再次重啟,然後選擇啟動選單時按e編輯啟動引數,再到處第二行新增 nomodeset 按f10便可進入系統。此時會發現系統...