hdu 1115 Lifting the Stone(求n边形的重心)

来源:互联网 发布:网络上粑粑什么意思 编辑:程序博客网 时间:2024/06/07 14:56


hdu 1115 Lifting the Stone


公式及推导见黑书P373


#include<stdio.h>#include<string.h>#define MAXN 1000005struct point{    double x,y;}p[MAXN];double cross(point a,point b){    return a.x*b.y-a.y*b.x;}int main(){    int cas,n;    scanf("%d",&cas);    while(cas--)    {        scanf("%d",&n);        for(int i=0;i<n;i++)            scanf("%lf%lf",&p[i].x,&p[i].y);                double sumx=0,sumy=0;        double area=0;        for(int i=0;i<n;i++)        {            double t=cross(p[i],p[(i+1)%n]);            area+=t/2;            sumx+=t*(p[i].x+p[(i+1)%n].x);            sumy+=t*(p[i].y+p[(i+1)%n].y);        }        double x=sumx/(6*area),        y=sumy/(6*area);        printf("%.2lf %.2lf\n",x,y);    }    return 0;}



0 0
原创粉丝点击