#include<cstring> #include<cstdio> #include<iostream> using namespace std; struct point { double x,y; }p[1000005]; int main() { int t; scanf("%d",&t); while(t--){ int n,i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%lf %lf",&p[i].x,&p[i].y); p[n].x=p[0].x;p[n].y=p[0].y; double ansarea=0,ansx=0,ansy=0; for(i=0;i<n;i++){ double temparea; temparea=(p[i].x*p[i+1].y-p[i].y*p[i+1].x); double tempx=((p[i].x+p[i+1].x+0)*1.0); double tempy=((p[i].y+p[i+1].y+0)*1.0); ansx+=tempx*temparea; ansy+=tempy*temparea; ansarea+=temparea; } printf("%.2lf %.2lf\n",ansx/ansarea/3.0,ansy/ansarea/3.0); } }
hdu 1115 计算多边形重心,布布扣,bubuko.com
原文:http://blog.csdn.net/cnh294141800/article/details/21448343