HDU 1115 求多边形重心

简介:

一个均匀的多边形重心为 横纵坐标和分别除以六倍的面积。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
using namespace std;
struct point
{
    double x,y;
    void input()
    {
        scanf("%lf%lf",&x,&y);
    }
    void print()
    {
        printf("%.2f %.2f\n",x,y);
    }
};
double cross(point i,point j,point k)
{
    return (j.x-i.x)*(k.y-i.y)-(k.x-i.x)*(j.y-i.y);
}
point Gravity(point p[],int n)
{
    point O,t;
    O.x = O.y = 0;
    t.x = t.y = 0;
    p[n] = p[0];
    double A = 0;
    for(int i=0; i<n; i++)
        A += cross(O,p[i],p[i+1]);
    A /= 2.0;
    for(int i=0; i<n; i++)
    {
        t.x += (p[i].x + p[i+1].x) * cross(O,p[i],p[i+1]);
        t.y += (p[i].y + p[i+1].y) * cross(O,p[i],p[i+1]);
    }
    t.x /= 6*A;
    t.y /= 6*A;
    return t;
}
point data[1000005];
int main()
{
    int t;
    int n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=0; i<n; i++)data[i].input();
        point t=Gravity(data,n);
        t.print();
    }
    return 0;
}


相关文章
|
11月前
|
[C++/PTA] 立方体类的实现
[C++/PTA] 立方体类的实现
133 0
|
11月前
|
[C++/PTA] 多边形周长计算(继承)
[C++/PTA] 多边形周长计算(继承)
152 0
HDU7018.Banzhuan(计算几何+贪心)
HDU7018.Banzhuan(计算几何+贪心)
120 0
HDU7018.Banzhuan(计算几何+贪心)
HDOJ/HDU 2547 无剑无我(两点间的距离)
HDOJ/HDU 2547 无剑无我(两点间的距离)
105 0
HDOJ(HDU) 1859 最小长方形(水题、、)
HDOJ(HDU) 1859 最小长方形(水题、、)
92 0
HDOJ(HDU) 2091 空心三角形
HDOJ(HDU) 2091 空心三角形
185 0
【D3.js 学习总结】23、D3几何 - 四叉树
# d3.geom.quadtree ![](https://img.alicdn.com/tps/TB1blCKLXXXXXbUXVXXXXXXXXXX-500-500.png) 四叉树也被称为Q树(Q-Tree)。四叉树广泛应用于图像处理、空间数据索引、2D中的快速碰撞检测、存储稀疏数据等,对游戏编程,这会很有用。 四叉树(Q-Tree)是一种树形数据结构。四叉树的定义是:它
2269 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等