Codeforce 1401 D. Maximum Distributed Tree 解析(思維.DFS.組合.貪心.DP) 今天我們來看看CF1401D 題目連結 題目 直接看原題比較清楚,略. 前言 這次比賽被第C.題搞到剩20分鐘可以寫D.這題,比賽時沒寫出來,比完了以後花了一個多小時Debug才De出來Orz. 想法 要注意到,題目中的distribution index實際上就是把每條路對於每個點對互相拜訪時,會被經過幾次,乘個權重,全部加起來.例如說\((u,v)\)這條邊,\(u\…
Codeforce 1420 D. Rescue Nibel! 解析(思維.組合.離散化.差分) 今天我們來看看CF1420D 題目連結 題目 給你\(n\)個區間,求有幾種方法使得\(k\)個區間的交集非空. 前言 組合不會算,也想不到離散化 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先需要找個依據來枚舉開始計算,而我們可以觀察到:對於任何一個\(k\)個區間的交集,這個交集的左界一定是某個區間的左界,也就是說我們可以…
Codeforce 342 E. Xenia and Tree 解析(思維.重心剖分) 今天我們來看看CF342E 題目連結 題目 給你一棵樹,有兩種操作,把某點標成紅色或者查詢離某點最近的紅點有多遠. 前言 這題我是當作學習重心剖分的習題看待的,最詳細的版本請看教學文 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 每兩個樹上的點,其重心剖分樹(CD樹)上的\(LCA\)一定在其最短路徑上.因此當我們把點\(v\)塗成紅色時,…
Codeforce 1328 E. Tree Queries 解析(思維.LCA) 今天我們來看看CF1328E 題目連結 題目 給你一棵樹,並且給你\(m\le2e5\)個詢問(包含\(k\)個點),求能不能找到一個從點\(1\)開始的路徑,使得這\(k\)個點離這個路徑的距離\(\le1\) 前言 久違的沒看解答寫的題目,故寫題解 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 可以觀察到,題目的敘述表示,對於一個節點\(v…
Codeforce 685 B. Kay and Snowflake 解析(思維.DFS.DP.重心) 今天我們來看看CF685B 題目連結 題目 給你一棵樹,要求你求出每棵子樹的重心. 前言 完全不知道我怎麼想到的 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先會感覺是樹狀DP,並且狀態是每個子樹的重心. 在建重心剖分樹的時候,我們找根為\(v\)的樹的重心的方法是看看目前節點有沒有大小大於目前樹的一半(\(size[v…
Codeforce 1041 E. Tree Reconstruction 解析(思維) 今天我們來看看CF1041E 題目連結 題目 略,請直接看原題 前言 一開始完全搞錯題目意思,還以為每次會刪除一條邊 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 注意到同一個點對\((a_i,b_i)\)如果出現\(k\)次,代表這兩點中間有\(k\)個比\(a_i\)小的點(記得\(a_i<b_i\)). 那麼我們只要先把所有點對保存…
Codeforce 500 D. New Year Santa Network 解析(思維.DFS.組合.樹狀DP) 今天我們來看看CF500D 題目連結 題目 給你一棵有邊權的樹,求現在隨機取\(3\)點,求這三點互相距離總和的期望值. 前言 今天寫的題目都是看解答就會寫,原本就沒有的自信心又要更低了 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 \(3\)個點要考慮的事情太多了,首先只要注意到以下一件事,那麼其他的事情就和…
Codeforce 1276 B. Two Fairs 解析(思維.DFS.組合) 今天我們來看看CF1276B 題目連結 題目 給一個連通圖,並給兩個點(\(a,b\)),求有多少點對使得:任一路徑都要經過\(a,b\)這兩點. 想法 首先因為不一定是棵樹,所以總覺得LCA用不到.而這個圖又很大,因此感覺應該是要從\(a,b\)這兩點出發做點事情,例如DFS. 當開始這樣想以後,會發現我們其實可以把所有點分成三種類型: \(a,b\)都走得到的 只有\(a\)走得到 只有\(b\)走得到 這樣…
Codeforce 1420 C2. Pokémon Army (hard version) 解析(思維) 今天我們來看看CF1420C2 題目連結 題目 略,請直接看原題. 前言 根本想不到這個等價的想法 @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 首先注意到,如果數列其中一段是遞增數列,那麼我們最好的方式就是減去最小的那個數字並且加上最大的那個數字.因為這樣做得到的值是\(\max-\min\),而如果我們選取這遞增數列…
Codeforce 722 D. Generating Sets 解析(思維) 今天我們來看看CF722D 題目連結 題目 略,請直接看原題 前言 真的是沒想到... @copyright petjelinux 版權所有 觀看更多正版原始文章請至petjelinux的blog 想法 觀察到,\(x\times2,x\times2+1\)這兩個運算反過來看就是把任一個數字除以\(2\)(因為整數型別會自動捨去小數點,所以整數型別的\(\frac{x}{2}=\lfloor\frac{x}{2}\r…