2020西工大校賽 C王國(LCA)

2022-05-28 15:27:12 字數 739 閱讀 1680

典型的樹上求兩點間距離最大值,lca的做法

這題要求同乙個陣營,不妨先將同屬乙個陣營的先存進陣列,之後每組進行比較

比較時取出深度最深的,因為這個一定是答案中兩點中的其中乙個答案,這是樹的性質,不妨可以想一想

#includeusing

namespace

std;

typedef

long

long

ll;const

int n=2e5+10

;int

depth[n];

int fa[n][21

];int

ne[n],e[n],h[n],idx;

intn;

inta[n];

vector

num[n];

void add(int a,int

b)bool cmp(int a,int

b)void

bfs()}}

}}int lca(int a,int

b) }

if(a==b)

for(i=20;i>=0;i--)

}return fa[a][0];}

intmain()

for(i=1;i)

bfs();

int res=0

;

for(i=1;i<=n;i++)}}

cout

}

view code

張經理的員工 (西工大校賽A題)

張經理的公司的辦公室長達100000公尺,從最左端開始每間隔1公尺都有乙個工位 從第1公尺開始有工位 位於第i公尺的工位稱為i號工位,且這些工位都在一條水平線上。他有n個員工,每個員工分別位於xi號工位上 不同員工可能位於同乙個工位 現在張經理想把員工聚集在某兩個工位上,他有q套方案 每套方案包含兩...

西工大《C 程式設計》 (二)

程式對演算法的實現體現為一定數量的語句和執行流程。c 語句 分簡單語句 表示式語句 函式呼叫語句 空語句 復合語句 控制語句。輸入輸出 c 的輸入輸出都是用流物件實現的。cin輸入時可用空格 tab和回車分隔資料。那如何將這三者賦值給字元變數呢?單路分支 if.與多路分支 if.else.switc...

西工大《C 程式設計》 (三)

一維陣列的定義 記憶體形式 連續儲存 初始化。靜態陣列與動態陣列的初始值。二維陣列的定義 記憶體形式 按行連續儲存 初始化。多維陣列的引用。陣列元素作為函式引數。整個陣列作為函式引數,傳遞的是陣列的首位址,所以實參和形參為同乙個物件。陣列作為函式引數時,編譯器不檢查陣列的長度,因此將陣列的首位址傳入...