寒假集訓隨筆

2022-09-19 00:27:14 字數 540 閱讀 1359

給定一批詢問 $(u,k)$,問的是一棵樹上某個點 $u$ 的 $k$ 級祖先是什麼。

怎麼辦?把所有詢問離線下來,把詢問 $(u,k)$ 塞進 $u$ 的乙個 vector 裡面,然後對整棵樹進行 dfs,維護乙個陣列 $dis[i]$ 表示從當前節點到根的路徑上,深度為 $i$ 的節點與根節點的距離。

然後詢問的答案就是 $curdis-dis[dep[u]-k]$。

其實就是說只有 $m$ 條邊不在邊集裡面。

將點分成兩類:度數(即這 $m$ 條邊的度數) $\leq \sqrt$ 的點和 $> \sqrt$ 的點。

首先將第一類點直接尋找匹配,就是直接列舉每個右部點看能不能匹配,不能就丟到第二類。

然後將第二類點暴力 dfs 匹配。注意dfs 時記錄乙個陣列 fa 表示下乙個未訪問的右部節點,使用 for(int v=getfa(u+1);v!=n+1;v=getfa(v+1)) 來列舉 v,否則大力**!!

時間複雜度 $o(n\sqrt)$。

寒假集訓 Find Metal Mineral

題目鏈結 題意 給出一顆生成樹,1 n 10000,在某乙個節點有k個機械人 k 10 然後機械人從這裡開始走,要求遍歷完節點,隨便停到什麼地方.求最少的路程總和.題解 樹形dp,關鍵是dp u i i的定義,因為機械人可能從子樹再跑回來,然後為了避免重複討論,應該定義為 在u為根的子樹上停了幾個機...

寒假集訓總結

寒假的訓練以不太順利的結果結束。整個寒假訓練都是兩天一場學長抓的訓練賽,然後補題,由於自己比較菜以及一些莫名的因素,導致訓練賽打得比較差,尤其是後幾場。訓練賽沒能打好的原因可能與狀態關係確實很大,但其中肯定與實力有關吧。總結一下,這些題目,演算法和思維上難倒自己的好像也沒幾道 後來補出來的 但是賽場...

ACM寒假集訓

出自 南昌理工學院acm集訓隊 什麼是dfs?void dfs 狀態 a 1.判斷狀態是否合法。合法繼續執行,否則則回到上次呼叫 2.先下走一層,也就是呼叫dfs a void dfs 引數用來表示狀態 if 越界或者是不合法狀態 return if 特殊狀態 剪枝 return for 擴充套件方...