雷达覆盖
Description
以雷達(dá)心為圓心的半圓形雷達(dá)覆蓋范圍有多個點(diǎn) 雷達(dá)可旋轉(zhuǎn),求最多覆蓋數(shù)(含在邊界的)
Input
Output
Sample Input
25 25 3.5------雷達(dá)坐標(biāo)與半徑
7----------點(diǎn)數(shù)
25 28-------點(diǎn)坐標(biāo)
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
分析
先把在半徑之外的點(diǎn)排除
枚舉點(diǎn)作為雷達(dá)的分界線,用叉積判斷左右兩邊點(diǎn)數(shù)量的多少,找一個最優(yōu)值。
程序:
#include<iostream> #include<cmath> #include<cstring> using namespace std; double r; int sx,sy,n,nm,ans,x[10001],y[10001],w=0; void work1(); int main() {do{int j,k;cin>>sx>>sy>>r;if (r<0) break;cin>>n;nm=0;ans=0;memset(x,0,sizeof(x));memset(y,0,sizeof(y));for (int i=1;i<=n;i++){cin>>j>>k;if (sqrt((j-sx)*(j-sx)+(k-sy)*(k-sy))<=r){nm++;x[nm]=j;y[nm]=k;}}int l,r,m;for (int i=1;i<=nm;i++){l=0;r=0;for (int j=1;j<=nm;j++){m=(x[i]-sx)*(y[j]-sy)-(y[i]-sy)*(x[j]-sx);if (m>0) r++;else l++;}if (l<r) l=r;if (l>ans) ans=l;}cout<<ans<<endl; }while(w==0);return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9500017.html
總結(jié)
- 上一篇: 矩形
- 下一篇: 神秘大三角(判断点与三角形的关系)