zoj 1041 || poj 1106

来源:互联网 发布:大数据带来的变革更好 编辑:程序博客网 时间:2024/06/07 03:25

给你一个半圆的圆心和半径 求此半圆最多可以覆盖平面上几个点

#include<stdio.h>#include<math.h>#define dist(a,b) sqrt(pow(a.x-b.x,2)+pow(a.y-b.y,2))#define circulate(a,b) a.x*b.x+a.y*b.y#define N 151struct point{int x,y;} a[N],s;double r;int n,ans;void input(){int m,i=0;n=0;scanf("%d",&m);while (i<m){scanf("%d%d",&a[i].x,&a[i].y);if (dist(a[i],s)<=r) {a[n].x=a[i].x-s.x;a[n++].y=a[i].y-s.y;}i++;}}void deal(){int i,j,u1,u2,u3;for (i=0;i<n;i++){u1=0;u2=0;u3=0;s.x=a[i].y;s.y=-a[i].x;for (j=0;j<n;j++){if (circulate(s,a[j])>0) u1++;else if (circulate(s,a[j])==0) u2++;else u3++;}if (u1+u2>ans) ans=u1+u2;if (u2+u3>ans) ans=u2+u3;}}int main(void){while (scanf("%d%d%lf",&s.x,&s.y,&r)!=EOF){if (r<0) break;ans=0;input();deal();printf("%d\n",ans);}}


0 0
原创粉丝点击