NYOJ_710_外星人的供給站【貪心】

/*
外星人的供給站
時間限制: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;
}


發佈了180 篇原創文章 · 獲贊 28 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章