思路
可並堆真是一種神奇的東西
不得不說這道題是道好題,雖然並不需要可並堆,但是能加深對可並堆的理解
首先考慮斜堆的性質,斜堆和左偏樹相似,有如下的性質
然後考慮倒序刪除節點就可以做了
對乙個節點,如果它沒有右子樹,它就可能是最後插入的點,但是顯然還有其他情況
如果它的左子樹中還有滿足條件的點,則取深度最淺的節點即可,考慮小於等
於當前根的權值的情況時,取深度最深會有問題,可以自行畫圖
然後如果左子樹中只有乙個節點,那麼兩個節點都可以,為保證字典序最小,把權值較大的節點放在答案序列靠後的位置即可
**
#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 現實步數 越接近越好,因為越接近能剪的枝就越多 當當前步數...