LZN樹————強於平衡樹

 

 

圓錐玩具

問題描述

 

xqz小朋友家中堆積了好多好多種玩具,其中一種便是圓錐玩具。他經常將這類玩具混亂的擺在地上,欣賞內在的排列美。

他先把圓錐垂直放在地面上。這些圓錐都有一個特點,就是它的半徑等於高度,且內部是空心的,底面也是空的。xqz小朋友有時會將其中的一些小的圓錐玩具放到比它大的圓錐玩具裏,如果一個圓錐玩具不被另外任意一個圓錐完全包裹着,xqz就會格外喜歡它(…)

你的任務便是幫助xqz小朋友找出所有他格外喜歡的玩具。(特別的,如果兩個圓錐的底面相切,小的圓錐也算被包裹着)爲了簡化模型,我們將地面抽象成二維平面。

 

輸入文件

 

第一行一個正整數N,表示玩具個數。

接下來N行,每行3個實數,rixiyi,表示圓錐底面的半徑和座標。(其中hi=rihi表示圓錐的高度),第i行爲第i個玩具。

輸入數據僅保證任意兩個圓錐的底面不相交且不重合,不保證不相切。

 

輸出文件

 

第一行一個數M,表示xqz格外喜歡的玩具的個數

第二行M個數,輸出玩具的編號,從小到大輸出,以空格隔開。

 

輸入樣例

 

5

1 0 -2

3 0 3

10 0 0

1 0 1.5

10 50 50

 

輸出樣例

 

2

3 5

 

數據規模和約定

      

       對於20%的數據,N ≤ 500

       對於100%的數據,N ≤ 100000-109 rixiyi ≤ 109ri爲正數。

 

 

 

 

 

本來要用平衡樹的一道題,被LZN樹給解決了,瞬間壓了代碼,有興趣的同學可以去試試打平衡樹。

本樹由LZN大牛發明,故命名爲LZN樹......

 

 

LZN樹核心思想:

以每個圓的最左邊的端點爲第一關鍵字,半徑爲第2關鍵字,快排一便。

然後從左至右搜,一旦超出範圍即可BREAK。

效率的話,我用多組數據測試過了,雖然理論複雜度是N^2,但由於LZN樹的特殊優化性,可以將實際複雜度壓至理論的1/12000左右,甚至超過了打平衡樹的同學,在所有測試點中,平均比平衡樹快大約2倍,感謝LZN大牛! 

 

          

 

 

猥瑣的標程:

 

 

友情鏈接:http://blog.csdn.net/woshitanwei/archive/2011/05/20/6434582.aspx

 

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