nyoj 199-無線網絡覆蓋 (ceil())
阿新 • • 發佈:2018-07-18
-o 並且 main ssi 0ms sta ear bsp orange
199-無線網絡覆蓋
內存限制:64MB
時間限制:3000ms
特判: No
通過數:4
提交數:13
難度:3
題目描述:
我們的樂樂同學對於網絡可算得上是情有獨鐘,他有一個計劃,那就是用無線網覆蓋鄭州大學。
現在學校給了他一個機會,因此他要購買很多的無線路由。現在他正在部署某條大道的網絡,而學校只允許把他的無線路由器放在路的正中間。我們默認這條大道是筆直的並且它在任何地方的寬度都一樣。並且所有的路由器的覆蓋面積是相同的。現在樂樂計算出這條大道的長和寬,以及路由器的覆蓋半徑,想請你幫忙,幫他計算出他最少要購買的路由器的數量。
註意:為了防止某種幹擾,兩臺無線路由之間的最小距離不能小於1米
圖1中為一條矩形的道路,中間的虛線代表中線。圖2為最小覆蓋的示意圖。
輸入描述:
輸入包括多組測試數據 第一部分:一個整數T(1<=T<=500) 第二部分:一共T行,每行包括三個整數L,D,R代表路的長,寬和覆蓋半徑(米)。 (1<=L<=100000),(1<=D<=50),(1<=R<=200)。
輸出描述:
對於每組測試數據輸出各占一行,只有一個整數,表示最少的路由器數量。如果不能覆蓋,請輸出impossible
樣例輸入:
2 40 6 5 40 10 5
樣例輸出:
5 impossible
C/C++ AC:
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <cmath> 6 #include <stack> 7 #include <set> 8 #include <map> 9 #include <queue> 10#include <climits> 11 12 using namespace std; 13 int n; 14 15 int main() 16 { 17 cin >> n; 18 while (n --) 19 { 20 double L, D, R; 21 cin >>L >> D >>R; 22 if (R <= D / 2) 23 { 24 cout <<"impossible" <<endl; 25 continue; 26 } 27 double temp = 2 * sqrt(R * R - (D/2) * (D/2)); 28 if (temp < 1) 29 { 30 cout <<"impossible" <<endl; 31 continue; 32 } 33 cout <<ceil(L / temp) <<endl; 34 } 35 }
nyoj 199-無線網絡覆蓋 (ceil())