/*
外星人的供給站
時間限制:1000 ms | 內存限制:65535 KB
難度:3
描述
外星人指的是地球以外的智慧生命。外星人長的是不是與地球上的人一樣並不重要,但起碼應該符合我們目前對生命基本形式的認識。比如,我們所知的任何生命都離不開液態水,並且都是基於化學元素碳(C)的有機分子組合成的複雜有機體。
42歲的天文學家Dr. Kong已經執著地觀測ZDM-777星球十多年了,這個被稱爲“戰神”的紅色星球讓他如此着迷。在過去的十多年中,他經常有一些令人激動的發現。ZDM-777星球表面有着明顯的明暗變化,對這些明暗區域,Dr. Kong已經細緻地研究了很多年,並且繪製出了較爲詳盡的地圖。他堅信那些暗區是陸地,而亮區則是湖泊和海洋。他一直堅信有水的地方,一定有生命的痕跡。Dr. Kong有一種強烈的預感,覺得今天將會成爲他一生中最值得紀念的日子。
這天晚上的觀測條件實在是空前的好,ZDM-777星球也十分明亮,在射電望遠鏡中呈現出一個清晰的暗紅色圓斑。還是那些熟悉的明暗區域和極冠,不過,等等,Dr. Kong似乎又撲捉到曾看到過的東西,那是什麼,若隱若現的。他儘可能地睜大了眼睛,仔細地辨認。哦,沒錯,在一條直線上,又出現了若干個極光點連接着星球亮區,幾分鐘後,極光點消失。
Dr. Kong大膽猜想,ZDM-777星球上的湖泊和海洋裏一定有生物。那些極光點就是ZDM-777星球上的供給站,定期給這些生物提出維持生命的供給。
不妨設,那條直線爲X軸,極光點就處在X軸上,N個亮區P1,P2,…Pn就分佈在若干個極光點周圍。
接着,Dr. Kong 又有驚人的發現,所有的亮區Pi都處在某個半徑爲R的極光點圓內。去掉一個極光點就會有某些亮區Pj不處在覆蓋區域內。
Dr. Kong想知道,至少需要多少個極光點才能覆蓋所有的湖泊和海洋。
輸入
第一行: K 表示有多少組測試數據。
接下來對每組測試數據:
第1行: N R
第2~N+1行: PXi PYi (i=1,…..,N)
【約束條件】
2≤K≤5 1≤R≤50 1≤N≤100 -100≤PXi PYi≤100 | PYi | ≤ R
R, PXi PYi都是整數。數據之間有一個空格。
輸出
對於每組測試數據,輸出一行: 最少需要的極光點數。
樣例輸入
2
3 2
1 2
-3 1
2 1
1 5
5 5
樣例輸出
2
1
題意:給定一些點,求用最小的圓將這些點包住。要求圓心在x軸上,切半徑固定。
思路: 把每個 點 在 x軸的圓心座標 求出,排序,從左到右,轉化成 求區間 選點的問題:貪心。
外星人的供給站
時間限制:1000 ms | 內存限制:65535 KB
難度:3
描述
外星人指的是地球以外的智慧生命。外星人長的是不是與地球上的人一樣並不重要,但起碼應該符合我們目前對生命基本形式的認識。比如,我們所知的任何生命都離不開液態水,並且都是基於化學元素碳(C)的有機分子組合成的複雜有機體。
42歲的天文學家Dr. Kong已經執著地觀測ZDM-777星球十多年了,這個被稱爲“戰神”的紅色星球讓他如此着迷。在過去的十多年中,他經常有一些令人激動的發現。ZDM-777星球表面有着明顯的明暗變化,對這些明暗區域,Dr. Kong已經細緻地研究了很多年,並且繪製出了較爲詳盡的地圖。他堅信那些暗區是陸地,而亮區則是湖泊和海洋。他一直堅信有水的地方,一定有生命的痕跡。Dr. Kong有一種強烈的預感,覺得今天將會成爲他一生中最值得紀念的日子。
這天晚上的觀測條件實在是空前的好,ZDM-777星球也十分明亮,在射電望遠鏡中呈現出一個清晰的暗紅色圓斑。還是那些熟悉的明暗區域和極冠,不過,等等,Dr. Kong似乎又撲捉到曾看到過的東西,那是什麼,若隱若現的。他儘可能地睜大了眼睛,仔細地辨認。哦,沒錯,在一條直線上,又出現了若干個極光點連接着星球亮區,幾分鐘後,極光點消失。
Dr. Kong大膽猜想,ZDM-777星球上的湖泊和海洋裏一定有生物。那些極光點就是ZDM-777星球上的供給站,定期給這些生物提出維持生命的供給。
不妨設,那條直線爲X軸,極光點就處在X軸上,N個亮區P1,P2,…Pn就分佈在若干個極光點周圍。
接着,Dr. Kong 又有驚人的發現,所有的亮區Pi都處在某個半徑爲R的極光點圓內。去掉一個極光點就會有某些亮區Pj不處在覆蓋區域內。
Dr. Kong想知道,至少需要多少個極光點才能覆蓋所有的湖泊和海洋。
輸入
第一行: K 表示有多少組測試數據。
接下來對每組測試數據:
第1行: N R
第2~N+1行: PXi PYi (i=1,…..,N)
【約束條件】
2≤K≤5 1≤R≤50 1≤N≤100 -100≤PXi PYi≤100 | PYi | ≤ R
R, PXi PYi都是整數。數據之間有一個空格。
輸出
對於每組測試數據,輸出一行: 最少需要的極光點數。
樣例輸入
2
3 2
1 2
-3 1
2 1
1 5
5 5
樣例輸出
2
1
題意:給定一些點,求用最小的圓將這些點包住。要求圓心在x軸上,切半徑固定。
思路: 把每個 點 在 x軸的圓心座標 求出,排序,從左到右,轉化成 求區間 選點的問題:貪心。
*/
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <math.h>
using namespace std;
struct Node{
double left;
double right;
}edge[100+5];
int cmp(const void *a,const void *b)
{
Node *c = (Node *)a;
Node *d = (Node *)b;
if(c->right!=d->right){
return c->right-d->right;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,r,i,j,x,y;
scanf("%d%d",&n,&r);
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
double tem = sqrt(r*r-y*y);
edge[i].left = x - tem; //找每個點 的兩個圓心座標點
edge[i].right = x + tem;
}
qsort(edge,n,sizeof(edge[0]),cmp);//從小到大排序
int temp = 0;
int count = 1;
for(i=1;i<n;i++){
if(edge[i].left>edge[temp].right){ //前邊的 右 大於後邊的左 說明 不能包括,+1
count ++ ;
temp = i;
}
}
printf("%d\n",count);
}
return 0;
}