題意:就是給你一個多邊行的點的坐標,求此多邊形的重心。
一道求多邊形重心的模板題!
#include#include #include using namespace std; struct point { double x,y; }PP[1000047]; point bcenter(point pnt[],int n){ point p,s; double tp,area = 0, tpx=0, tpy=0; p.x=pnt[0].x; p.y=pnt[0].y; for(int i=1;i<=n;++i){ s.x=pnt[(i==n)?0:i].x; s.y=pnt[(i==n)?0:i].y; tp=(p.x*s.y-s.x*p.y); area += tp/2; tpx += (p.x + s.x) * tp; tpy += (p.y + s.y) * tp; p.x = s.x; p.y = s.y; } s.x=tpx / (6*area);s.y=tpy/(6*area); return s; } int main() { int N,t; scanf("%d",&t); while(t--){ scanf("%d",&N); for(int i=0;i