在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。
現在,在這個地區露出水面的有n棵樹,假設每棵樹本身的直徑都很小,可以忽略不計。我們在這塊區域上建立直角座標系,則每一棵樹的位置由其所對應的座標表示(任意兩棵樹的座標都不相同)。
在這個地區住著的猴子有m個,下雨時,它們都躲到了茂密高大的樹冠中,沒有被大水沖走。由於各個猴子的年齡不同、身體素質不同,它們跳躍的能力不同。有的猴子跳躍的距離比較遠(當然也可以跳到較近的樹上),而有些猴子跳躍的距離就比較近。這些猴子非常聰明,它們通過目測就可以準確地判斷出自己能否跳到對面的樹上。
【問題】現已知猴子的數量及每乙個猴子的最大跳躍距離,還知道露出水面的每一棵樹的座標,你的任務是統計有多少個猴子可以在這個地區露出水面的所有樹冠上覓食。
輸入檔案monkey.in包括:
第1行為乙個整數,表示猴子的個數m(2<=m<=500);
第2行為m個整數,依次表示猴子的最大跳躍距離(每個整數值在1--1000之間);
第3行為乙個整數表示樹的總棵數n(2<=n<=1000);
第4行至第n+3行為n棵樹的座標(橫縱座標均為整數,範圍為:-1000--1000)。
(同一行的整數間用空格分開)
輸出檔案monkey.out包括乙個整數,表示可以在這個地區的所有樹冠上覓食的猴子數。
輸入 #1複製
41 2 3 4
60 0
1 01 2
-1 -1
-2 0
2 2
輸出 #1複製
3
【資料規模】
對於40%的資料,保證有2<=n <=100,1<=m<=100
對於全部的資料,保證有2<=n <= 1000,1<=m=500
感謝@charlie003 修正資料
題解:板子kruskal,可惜我一開始陣列開小了,導致50分,re了另外5個點
而且我一開始忘記fa[i]=i了。枯了,漏洞百出啊!繼續努力。
#include#include#include
#include
#include
#include
#include
using
namespace
std;
typedef
double
db;const
int n=1005
;const
int mx=2500006
;int
n,m,cp,tot,fa[n],b[n];
struct
nodea[n];
struct
yclle[mx];
int ans=0
;int how_long(int uu,int
vv)bool
cmp(ycll aa,ycll bb)
int find(int
x)//
int b[n];
intmain()
}sort(e+1,e+cp+1
,cmp);
//coutint fans=0
; db ff=(db)sqrt(ans);
for(int i=1;i<=n;i++)
if(ff<=b[i]) fans++;
printf("%d
",fans);
return0;
}
洛谷P2504 HAOI2006 聰明的猴子
在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。現在,在這個地區露出水面的有n棵樹,假設每棵樹本身的直徑都...
洛谷 P2504 HAOI2006 聰明的猴子
在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。現在,在這個地區露出水面的有n棵樹,假設每棵樹本身的直徑都...
洛谷 P2504 HAOI2006 聰明的猴子
洛谷 p2504 haoi2006 聰明的猴子 在乙個熱帶雨林中生存著一群猴子,它們以樹上的果子為生。昨天下了一場大雨,現在雨過天晴,但整個雨林的地表還是被大水淹沒著,部分植物的樹冠露在水面上。猴子不會游泳,但跳躍能力比較強,它們仍然可以在露出水面的不同樹冠上來回穿梭,以找到喜歡吃的果實。現在,在這...