[JOI 2015 Final]舞會

題目

傳送門 to LOJ

思路

大佬的博客寫的賊好,我都不好意思自己再寫一篇了😇

其實我們可以認爲能力值互不相同,哈希一下即可。

首先,第一步就直接是神來之筆,將過程轉化爲樹!一顆完全三叉樹,每個非葉子節點代表,三個兒子中“脫(吃)穎(了)而(狗)出(糧)”的那個可憐人。葉子節點則是全體貴族。

這棵樹可能就是介個樣子的,拿樣例解釋中的隊伍來畫一畫:

在這裏插入圖片描述當然,樹的形態可能會長的奇奇怪怪。但是,我肯定地說,樹的形態是唯一的

現在,我們有一顆樹,其中的一些節點是被固定了的。我們就可以利用樹形 dpdp 啦!

第二步,又是天啓之着,二分最終的答案,將數字劃分爲零和一

這個操作也可以在這道題裏使用。特點:只在乎大小關係。

劃分成零和一之後,我們可以直接用樹形 dpdp ,記 f(x)f(x) 爲,使得 xx11 的代價。葉子節點很簡單,直接判斷是否爲 11 ;否則,我們需要兩個兒子都取到 11 。所以,簡單來講就是 f(x)=mincyc[f(a)+f(b)]f(x)=\min_{\text{cyc}}[f(a)+f(b)]

這裏借用了一下循環求和的符號 cyc\text{cyc} ,意會就好啦,就是選兩個子節點。

顯然 dpdp 的複雜度是線性的,又有二分,故總複雜度是 O(nlogn)\mathcal O(n\log n)

代碼

該博主設置了查閱權限,只有他的女朋友才能查看代碼!

——不過他沒有女朋友。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章