#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define PI acos(-1.0)
using namespace std;
struct node
{
double x,y;
}p[1260];
double d[2560],res;
double C(int n,int m)
{
double ans=1;
if(m>n)
return 0;
for(int i=0;i<m;i++)
ans=ans*(n-i)/(i+1);
return ans;
}
int main()
{
int n,t=1;
while(~scanf("%d",&n)&&n)
{
res=n*C(n-1,3);
for(int i=0;i<n;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
for(int i=0;i<n;i++)
{
int cnt=0;
double ans=0;
for(int j=0;j<n;j++)
{
if(i!=j)
d[cnt++]=atan2(p[j].y-p[i].y,p[j].x-p[i].x)+2*PI;
}
sort(d,d+cnt);
for(int j=0;j<cnt;j++)
d[j+cnt]=d[j]+2*PI;
int k=1;
for(int j=0;j<cnt;j++)
{
while(fabs(d[k]-d[j])<PI&&k<2*cnt)
k++;
if(k-j-1>1)
ans+=(k-j-1)*(k-j-2)/2;
}
res-=ans;
}
printf("City %d: %.2f\n",t++,res/(n*(n-1)*(n-2)/6));
}
}
uva 11529 求一个平面内有多少个凸边形 或者求所有三角形包含点的总个数
最新推荐文章于 2023-11-06 20:19:04 发布