以雷達心為圓心的半圓形雷達覆蓋範圍有多個點 雷達可旋轉,求最多覆蓋數(含在邊界的)
列舉點作為雷達的分界線,用叉積判斷左右兩邊點數量的多少,找乙個最優值。
可以先把在半徑之外的點排除
var
x,y:array[1..10000] of longint;
sx,sy:longint;
ans:longint;
nm:longint;
n:longint;
r:real;
procedure
init;
var i,j,k:longint;
begin
readln(sx,sy,r);
if r<=0
then
exit;
readln(n);
nm:=0;
ans:=0;
fillchar(x,sizeof(x),0);
fillchar(y,sizeof(y),0);
for i:=1
to n do
begin
readln(j,k);
if sqrt(sqr(j-sx)+sqr(k-sy))<=r
then
begin
nm:=nm+1;
x[nm]:=j; y[nm]:=k;
end;
end;
end;
procedure
main;
var i,j,k:longint;
l,r:longint;
m:longint;
begin
for i:=1
to nm do
begin
l:=0;
r:=0;
for j:=1
to nm do
begin
m:=(x[i]-sx)*(y[j]-sy)-(y[i]-sy)*(x[j]-sx);
if m>0
then r:=r+1
else l:=l+1;
end;
if lthen l:=r;
if l>ans then ans:=l;
end;
writeln(ans);
end;
begin
init;
while r>0
dobegin
main;
init;
end;
end.
SSL1232雷達覆蓋 normal
以雷達心為圓心的半圓形雷達覆蓋範圍有多個點 雷達可旋轉,求最多覆蓋數 含在邊界的 25 25 3.5 雷達座標與半徑 7 點數 25 28 點座標 23 27 27 27 24 23 26 23 24 29 26 29 350 200 2.0 5 350 202 350 199 350 198 34...
ZJU 1041 SSLGZ 1232 雷達覆蓋
問題描述 以雷達心為圓心的半圓形雷達覆蓋範圍有多個點 雷達可旋轉,求最多覆蓋數 含在邊界的 樣例輸入 25 25 3.5 雷達座標與半徑 7 點數 25 28 點座標 23 27 27 27 24 23 26 23 24 29 26 29 350 200 2.0 多組資料 5 350 202 350...
計算幾何 訊號覆蓋
輸入第一行包含乙個正整數 n,表示房子的總數。接下來有 n 行,分別表示每乙個房子的位置。對於 i 1,2,n,第i 個房子的座標用一對整數 xi和yi來表示,中間用空格隔開。輸出檔案包含乙個實數,表示平均有多少個房子被訊號所覆蓋,需保證輸出結果與精確值的絕對誤差不超過0.01。4 0 2 4 4 ...