1. 程式人生 > >貪心演算法之——噴水裝置(一)

貪心演算法之——噴水裝置(一)

描述 現有一塊草坪,長為20米,寬為2米,要在橫中心線上放置半徑為Ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數Ri(0<Ri<15)的圓被溼潤,這有充足的噴水裝置i(1<i<600)個,並且一定能把草坪全部溼潤,你要做的是:選擇儘量少的噴水裝置,把整個草坪的全部溼潤。
輸入
第一行m表示有m組測試資料
每一組測試資料的第一行有一個整數數n,n表示共有n個噴水裝置,隨後的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑。
輸出
輸出所用裝置的個數
樣例輸入
2
5
2 3.2 4 4.5 6 
10
1 2 3 1 2 1.2 3 1.1 1 2
樣例輸出
2
5
#include<stdio.h>
#include<algorithm>
#include<iostream>
#include<math.h>
using namespace std;
int main(void){
	int s;
	cin>>s;
	while(s--){
		int m,j=0;
		double length=0;
		cin>>m;
		double a[601];
		for(int i=0;i<m;i++)
		 cin>>a[i];
		 sort(a,a+m);
		 for(int i=m-1;length<20;i--){
		 	      length=length+2*sqrt(a[i]*a[i]-1);j++;
		 }
		 cout<<j<<endl;
	}
}