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;
}


目录
相关文章
|
Python
LeetCode每日一题——883. 三维形体投影面积
在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。
120 0
LeetCode每日一题——883. 三维形体投影面积
矩形面积交[蓝桥杯]
平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。
矩形面积交[蓝桥杯]
|
机器学习/深度学习
1036. 逃离大迷宫 : BFS + 给定障碍物所能围成的最大面积
1036. 逃离大迷宫 : BFS + 给定障碍物所能围成的最大面积
在线编程--46.最大矩形面积
记录并分享自己的做题想法及源码,由于在此之前从没有使用过Java,而在线编程只能用java,因此边学编写,代码比较粗糙,欢迎提出建议,帮助蓬莱松进行改进,在此先谢谢大家啦。。。
407 0
|
人工智能 算法
洛谷P1387 最大正方形
题目描述 题目链接:https://www.luogu.org/problemnew/show/P1387 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长。 输入输出格式 输入格式:  输入文件第一行为两个整数n,m(1
1309 0
洛谷 P1318 积水面积
题目描述 一组正整数,分别表示由正方体迭起的柱子的高度。若某高度值为x,表示由x个正立方的方块迭起(如下图,0
1069 0
|
C++
C++第13周(春)项目3 - 与圆心相连的直线
课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759,内有完整教学方案及资源链接 【项目3 - 与圆心相连的直线】  在项目1中定义的Point(点)类和Circle(圆)类基础上,设计一种方案,输出给定一点p与圆心相连成的直线与圆的两个交点。  提示:   参考解答: 方案1:用引用类型参数获得结果 #include
1276 0