SSL1232雷达覆盖(normal)

    xiaoxiao2021-03-25  104

    题目描述

    以雷达心为圆心的半圆形雷达覆盖范围有多个点 雷达可旋转,求最多覆盖数(含在边界的)

    样例输入

    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 348 200 352 200 995 995 10.0 4 1000 1000 999 998 990 992 1000 999 100 100 -2.5

    样例输出

    3 4 4

    思路

    O(km^2) 先把雷达范围内的点用勾股定理剔除,再以每个点和圆心的直线为直径,计算左边和右边的点数,覆盖的点数要加上在直径上的点。 var x,y:array[1..1000] of longint; n,a,b,c:double; m,i,j,k,l,r,mid,max:longint; begin readln(a,b,n); while not eof(input) do begin readln(m);j:=0; for i:=1 to m do begin inc(j); readln(x[j],y[j]); if sqrt(sqr(a-x[j])+sqr(b-y[j]))>n then dec(j); end; max:=0; for i:=1 to j do begin mid:=0;l:=0;r:=0; for k:=1 to j do begin c:=(y[k]-b)*(x[i]-a)-(x[k]-a)*(y[i]-b); if c=0 then inc(mid); if c<0 then inc(l); if c>0 then inc(r); end; if l+mid>max then max:=l+mid; if r+mid>max then max:=r+mid; end; writeln(max); readln(a,b,n); end; end.
    转载请注明原文地址: https://ju.6miu.com/read-24125.html

    最新回复(0)