演算法競賽入門經典--紫書6.3.1小球下落
每個小球都會落在根節點上,因此前兩個小球必然是一個在左子樹,一個在右子樹。一般地,只需看小球編號的奇偶性,就能知道它是最終在哪棵子樹中。對於那些落入根節點 左子樹的小球來說,只需知道該小球是第幾個落在根的左子樹裡的,既可以知道它下一步往左還是往右了。以此類推,直到小球落到葉子上。
如果使用題目中給出的編號n,則當I是奇數時,它是往左走的第(n+1)/2個小球;當I是偶數時,它是往右走的對n/2個小球。這樣,可以直接模擬最後一個小球的路線。
-----------------------------------------------------------------
以上是摘抄。不好理解。
個人理解:
每一個雙親節點,在球經過時。對於該節點,該球若為第偶數個則往左走,奇數個就往右走。
這個規律正好和十進位制轉換為二進位制的時候的奇偶過程一致。所以可以用計算後者的步驟餘數來代表規律中的方向。就可以計算了。
比如:
如果把向左和向右描述成0和1.D=4時
那麼第0個小球的方向變化為:0,0,0;第1個小球:1,0,0 ;第2個小球:0,1,0;第3個小球:1,1,0
恰好是其二進位制的逆序。所以程式中可以使用
for(int i = 0; i < d-1; i++)if(n%2){ k *= 2; n = (n+1)/2;}else{ k = k*2+1; n /= 2;}
就像是在將10進位制轉換為2進位制一樣進行趨勢控制,迴圈體內不斷地做n%2。
用深度來進行層次控制,<d-1。
而根據趨勢不同來計算最終下落到的節點的號碼,k的計算。
相關文章
- 演算法競賽入門經典訓練指南 pdf演算法
- 演算法競賽入門經典_5 c++與STL入門演算法C++
- kaggle再一次入門~經典入門級競賽~Titanic
- 劉汝佳《演算法競賽入門經典(第二版)》習題(三)演算法
- ACM題解系列之一:劉汝佳:《演算法競賽入門經典》(第2版)ACM演算法
- 初學acmer--讀《演算法競賽入門經典》筆記(p36-41)ACM演算法筆記
- 演算法競賽C++快速入門演算法C++
- 小球下落-二叉樹二叉樹
- 初學acmer--《演算法競賽經典入門》第二章2.5 習題自己的解答ACM演算法
- 經典加密演算法入門-RSA加密演算法
- 【CSDN競賽第24期】贏熱門圖書《演算法競賽》和定製周邊演算法
- 演算法競賽入門經典(第二版)第二章 習題2-2 韓信點兵演算法
- 演算法競賽入門經典(第2版)-劉汝佳-第三章解題原始碼(C語言)演算法原始碼C語言
- Webpack經典入門Web
- AI經典書單 | 入門人工智慧該讀哪些書?AI人工智慧
- 經典面試問題:12小球問題演算法(原始碼)面試演算法原始碼
- 2024端午鋁紫程式設計競賽程式設計
- ACM演算法競賽_快速入門v0.1(施工中)ACM演算法
- 《Flutter 入門經典》之“Flutter 入門 ”Flutter
- [轉]BI入門經典
- Kafka入門經典教程Kafka
- BI入門經典 (轉)
- 聊聊經典機器學習入門機器學習
- 2024國慶鋁紫程式設計競賽程式設計
- Unix 入門經典 筆記筆記
- springboot入門經典Spring Boot
- 【Kaggle入門級競賽top5%排名經驗分享】— 建模篇
- 【Kaggle入門級競賽top5%排名經驗分享】— 分析篇
- Python入門經典案例一Python
- 《jQueryMobile入門經典》——2.4 總結jQuery
- 最經典的黑客入門教程黑客
- 《演算法競賽進階指南》藍書重做記錄演算法
- HTML與CSS入門經典(第7版)電子書pdf下載HTMLCSS
- C語言入門經典(第4版)電子書pdf下載C語言
- 《Linux Shell 指令碼攻略》書評:條分縷晰,入門經典Linux指令碼
- 博弈論經典模型解析(入門級)模型
- 《jQueryMobile入門經典》——2.5 問與答jQuery
- 大資料競賽平臺——Kaggle 入門篇大資料