題目
思路
大佬的博客寫的賊好,我都不好意思自己再寫一篇了😇
其實我們可以認爲能力值互不相同,哈希一下即可。
首先,第一步就直接是神來之筆,將過程轉化爲樹!一顆完全三叉樹,每個非葉子節點代表,三個兒子中“脫(吃)穎(了)而(狗)出(糧)”的那個可憐人。葉子節點則是全體貴族。
這棵樹可能就是介個樣子的,拿樣例解釋中的隊伍來畫一畫:
當然,樹的形態可能會長的奇奇怪怪。但是,我肯定地說,樹的形態是唯一的!
現在,我們有一顆樹,其中的一些節點是被固定了的。我們就可以利用樹形 啦!
第二步,又是天啓之着,二分最終的答案,將數字劃分爲零和一!
這個操作也可以在這道題裏使用。特點:只在乎大小關係。
劃分成零和一之後,我們可以直接用樹形 ,記 爲,使得 爲 的代價。葉子節點很簡單,直接判斷是否爲 ;否則,我們需要兩個兒子都取到 。所以,簡單來講就是
這裏借用了一下循環求和的符號 ,意會就好啦,就是選兩個子節點。
顯然 的複雜度是線性的,又有二分,故總複雜度是 。
代碼
該博主設置了查閱權限,只有他的女朋友才能查看代碼!
——不過他沒有女朋友。