NYOJ_6 噴水裝置(1)

噴水裝置(一)

時間限制:3000 ms  |  內存限制:65535 KB
難度:3
描述
現有一塊草坪,長爲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 <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

bool compare(double a,double b)
{
      return a>b;  //a>b 降序,a<b,升序

}
int main()
{
       int TestNum,size;
       double data;
       cin>>TestNum;
       while(TestNum--)
       {

              cin>>size;
              double* arr = new double[size];
              for(int i =0;i<size;i++)
              {
                     cin>>data;
                     arr[i] = data;
              }
              sort(arr,arr+size,compare);
              double key = 20.0;
              int j = 0;
              while(key>0)
              {
                     key -= 2*sqrt(arr[j]*arr[j] - 1.0);
                     j++;
              }
              cout<<j<<endl;
              delete [] arr;
       }
       return 0;
}
//由上圖可知,圓與長方形的幾何關係滿足等式  R^2 = L^2+ 1^2; 圓半徑R默認大於等於1,即切距2L爲完全覆蓋的長度,當累計圓的切距大於等於長方形長度時,滿足條件。(根據題意,對數組按降序排列,找出最少的個數。) 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章