Description
In a wireless network with multiple transmitters sending on the same frequencies, it is often a requirement that signals don't overlap, or at least that they don't conflict. One way of accomplishing this is to restrict a transmitter's coverage area. This problem uses a shielded transmitter that only broadcasts in a semicircle.Input
Input consists of information for one or more independent transmitter problems. Each problem begins with one line containing the (x,y) coordinates of the transmitter followed by the broadcast radius, r. The next line contains the number of points N on the grid, followed by N sets of (x,y) coordinates, one set per line. The end of the input is signalled by a line with a negative radius; the (x,y) values will be present but indeterminate. Figures 1 and 2 represent the data in the first two example data sets below, though they are on different scales. Figures 1a and 2 show transmitter rotations that result in maximal coverage.Output
For each transmitter, the output contains a single line with the maximum number of points that can be contained in some semicircle.Sample Input
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
Sample Output
3 4 4
Source
Mid-Central USA 2001
題目大意:給你一個半圓的圓心坐標,和半徑,再給你一堆點的坐標,然後問半圓旋轉可以覆蓋最多幾個點
ac代碼
#include#include #include struct s { double x,y; }a,b[100100],c[100100]; double r; double dis(struct s a,struct s b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } double cross(struct s a,struct s b,struct s c) { return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y); } int main() { while(scanf("%lf%lf%lf",&a.x,&a.y,&r)!=EOF) { int n,i,j,k=0; if(r<0) break; scanf("%d",&n); for(i=0;i =0&&i!=j) { ans++; } } if(ans>max) { max=ans; } } printf("%d\n",max); } }