在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。
現在,在這個地區露出水面的有n棵樹,假設每棵樹本身的直徑都很小,可以忽略不計。我們在這塊區域上建立直角座標系,則每一棵樹的位置由其所對應的座標表示(任意兩棵樹的座標都不相同)。
在這個地區住著的猴子有m個,下雨時,它們都躲到了茂密高大的樹冠中,沒有被大水沖走。由於各個猴子的年齡不同、身體素質不同,它們跳躍的能力不同。有的猴子跳躍的距離比較遠(當然也可以跳到較近的樹上),而有些猴子跳躍的距離就比較近。這些猴子非常聰明,它們通過目測就可以準確地判斷出自己能否跳到對面的樹上。
【問題】現已知猴子的數量及每乙個猴子的最大跳躍距離,還知道露出水面的每一棵樹的座標,你的任務是統計有多少個猴子可以在這個地區露出水面的所有樹冠上覓食。
首先可以把所有樹冠之間兩兩計算距離,時間複雜度(500000左右,足夠)。然後跑一邊kruskal算出最小生成樹,再在最小生成樹中找到最大的一條邊權,記錄下來和每乙隻猴子的跳躍最值相比較就行了。
#include#include#includeusing namespace std;
int fa[1005],a[505],x[1005],y[1005];
int find(int x)//找父親(寫法一)
/*int find(int x)//找父親(寫法二)
*/struct ben
ans[600005];//定義乙個結構體,ans【i】表示一條從s出發到t權值為e的邊
int cmp(const ben &a,const ben &b)//比較大小函式
} printf("%d",answer);
return 0;
}
HAOI2006 聰明的猴子
在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。現在,在這個地區露出水面的有n棵樹,假設每棵樹本身的直徑都...
最小生成樹 HAOI2006 聰明的猴子
題目 haoi2006 聰明的猴子 描述 在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的部分植物的樹冠上來回穿梭,以找到喜歡吃的果實。現在,在這個地區露出水面的有n棵樹,...
最小生成樹 HAOI2006 聰明的猴子
原題鏈結 haoi2006 聰明的猴子 給你 n 個數,代表最多可以走多長的邊權,再給你 m 個座標,每個座標給 x,y 兩個值,求在 n 中有多少值能夠走完 m 個這些座標 很水的一道題,只是熟悉下模板 就是座標兩兩連線,然後用最小生成樹亂搞一下 最小生成樹模板出錯改了乙個小時 quq defin...