P2475 SCOI2008 斜堆(遞迴模擬)

2022-05-01 21:15:15 字數 780 閱讀 8417

思路

可並堆真是一種神奇的東西

不得不說這道題是道好題,雖然並不需要可並堆,但是能加深對可並堆的理解

首先考慮斜堆的性質,斜堆和左偏樹相似,有如下的性質

然後考慮倒序刪除節點就可以做了

對乙個節點,如果它沒有右子樹,它就可能是最後插入的點,但是顯然還有其他情況

如果它的左子樹中還有滿足條件的點,則取深度最淺的節點即可,考慮小於等

於當前根的權值的情況時,取深度最深會有問題,可以自行畫圖

然後如果左子樹中只有乙個節點,那麼兩個節點都可以,為保證字典序最小,把權值較大的節點放在答案序列靠後的位置即可

**

#include #include #include using namespace std;

int lson[150],rson[150],fa[150],n,cnt,ans[150],root;

int getlast(int o)

o=lson[o];

}if(lson[o]!=-1&&lson[lson[o]]==-1)

ans=lson[o];

return ans;

}void del(int o,int val)

}int main()

else

}fa[0]=-1;

root=0;

while(cnt--)

for(int i=0;i<=n;i++)

printf("%d ",ans[i]);

return 0;

}

P2325 SCOI2005 王室聯邦

傳送門 一遍dfs,如果某個子樹的未劃分的個數大於等於 b 那麼就把他們單獨劃為乙個省,該點作為省會 最後把所有剩下的和 1 劃到乙個省就好了 minamoto include define r register define fp i,a,b for r int i a,i b 1 ii i de...

P2573 SCOI2012 滑雪 題解

下午花了三個小時肝這道題,心態差點 下面是分析 1 題目要求 2求最小生成樹3但是 4 a是從1號點開始的 如果以後的某個點比一號高,則不可能到達 5 a只能從高往低處滑 6 可能某兩個景點沒有軌道連線 沒有處在乙個聯通快裡?78 生成樹的要求 9 樹根高度最大 10 子節點的高度必須比父親結點小 ...

P2324 SCOI2005 騎士精神

ida 演算法 12個白騎士和12個黑騎士在乙個5 5的棋盤上走來走去,求最後走成目標局面的最小步數。看不懂請走傳送門 ida 就是帶有迭代加深和估價函式優化的搜尋。估價函式 對未來搜尋深度的最優估計 通常是達不到的 對於估價函式g,要求g 現實步數 越接近越好,因為越接近能剪的枝就越多 當當前步數...