樹(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 #includeview code#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;
}
樹(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便可進入系統。此時會發現系統...