http://acm.hdu.edu.cn/showproblem.php?pid=1115

引用博客:https://blog.csdn.net/ysc504/article/details/8812339

 //①质量集中在顶点上
// n个顶点坐标为(xi,yi),质量为mi,则重心
//  X = ∑( xi×mi ) / ∑mi
//  Y = ∑( yi×mi ) / ∑mi
//  特殊地,若每个点的质量相同,则
//  X = ∑xi / n
//  Y = ∑yi / n
//②质量分布均匀
//  特殊地,质量均匀的三角形重心:
//  X = ( x0 + x1 + x2 ) / 3
//  Y = ( y0 + y1 + y2 ) / 3
//③三角形面积公式:S = ( (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1) ) / 2 ;
//因此做题步骤:1、将多边形分割成n-2个三角形,根据③公式求每个三角形面积。
// 2、根据②求每个三角形重心。
// 3、根据①求得多边形重心。
#include <stdio.h>
struct Point
{
double x, y;
};
double area(Point p1, Point p2, Point p3)
{
return ((p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y)) / ;
}
int main()
{
int t, n, i;
Point p1, p2, p3;
double gx, gy, sumarea, temp;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
gx = gy = sumarea = ;
scanf("%lf%lf%lf%lf", &p1.x, &p1.y, &p2.x, &p2.y);
for(i = ; i < n; i++)
{
scanf("%lf%lf", &p3.x, &p3.y);
temp = area(p1, p2, p3);
gx += (p1.x + p2.x + p3.x) * temp;
gy += (p1.y + p2.y + p3.y) * temp;
sumarea += temp;
p2 = p3;
}
gx = gx / sumarea / ;
gy = gy / sumarea / ;
printf("%.2lf %.2lf\n", gx, gy);
}
return ;
}

多边形求重心 HDU1115的更多相关文章

  1. hdu1115【多边形求重心模板】

    1.质量集中在顶点上.n个顶点坐标为(xi,yi),质量为mi,则重心(∑( xi×mi ) / ∑mi, ∑( yi×mi ) / ∑mi) 2.质量分布均匀.这个题就是这一类型,算法和上面的不同. ...

  2. Lifting the Stone 计算几何 多边形求重心

    Problem Description There are many secret openings in the floor which are covered by a big heavy sto ...

  3. HDU1115&&POJ1385Lifting the Stone(求多边形的重心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1115# 大意:给你个n,有n个点,然后给你n个点的坐标,求这n个点形成的多边形的重心的坐标. 直接套模 ...

  4. hdu1115(计算多边形几何重心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1115 题意:给出一些点,求这些点围成的多边形的重心: 思路: 方法1:直接分别求所有点的x坐标的平均值 ...

  5. Lifting the Stone(求多边形的重心—)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...

  6. Lifting the Stone(hdu1115)多边形的重心

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...

  7. POJ 1385 Lifting the Stone (多边形的重心)

    Lifting the Stone 题目链接: http://acm.hust.edu.cn/vjudge/contest/130510#problem/G Description There are ...

  8. [NetTopologySuite](2)任意多边形求交

    任意多边形求交: private void btnPolygon_Click(object sender, EventArgs e) { , , , , , , , , , , , , , }; , ...

  9. C#多边形求角——实例说

    前段时间有写过一个计算多边形角度的代码,这里给它整理整理,留给自己也送给萌新. 看左下图,这是一个多环的多边形,一个外环(内部为多边形内部区域),一个内环(外部为多边形内部区域),同时多边形中任意一个 ...

随机推荐

  1. 03 JavaScript的使用

    01 注册界面的校验 <!-- 作者:offline 时间:2018-09-05 描述:通常在CSS中使用类选择器,在JS中使用id选择器,两者区分开. 在页面跳转时要先把要跳转的页面用浏览器打 ...

  2. children([expr]) 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合。

    children([expr]) 概述 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合. 可以通过可选的表达式来过滤所匹配的子元素.注意:parents()将查找所有祖辈元素,而chil ...

  3. react须知

    1. JSX是什么? 1)JSX是一种facebook发明的语法.就是将HTML和JS 可以同时书写.其实是一种js的语法糖. 但是浏览器不能识别,需要通过babel-loader来转译. @babe ...

  4. selenium-爬取小说

    selenium-爬取小说 1 import requests 2 from bs4 import BeautifulSoup 3 import sys 4 from selenium import ...

  5. [笔记]C++声明返回数组指针的函数

    数组指针的声明:type (*name)[size]; 由于数组不能拷贝,所以函数不能返回数组.但是函数可以返回指针和引用,所以函数可以返回数组指针或引用. 和数组指针的声明类似: type (*fu ...

  6. LVS集群之DR模式

    今天来讲LVS-DR模式集群实现负载均衡的搭建方法 环境 主机名 IP   系统 角色 dir DIP:192.168.199.9 VIP:192.168.199.8 rhel7.4 集群服务器 no ...

  7. Leetcode题目46.全排列(回溯+深度优先遍历+状态重置-中等)

    题目描述: 给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], ...

  8. docker crontab踩坑记录

    环境,docker centos7.4 容器启动时注意两点 入口要设置/usr/sbin/init,并且配置主机完全访问权限(--privileged) (否则执行service的时候会出现Faile ...

  9. Linux设备驱动程序 之 获取当前时间

    墙上时间 内核一般通过jiffies来获取当前时间,该数值表示的是最近一次系统启动到当前的时间间隔,它和设备驱动程序无关,因为它的声明期只限于系统的运行期:但是驱动程序可以用jiffies来计算不同事 ...

  10. 【麦兜搞it】Python入门

    一.基本数据类型 整型.浮点型.布尔型内容略 1.字符串的格式化 name='python' age=27 # 打印“我是python,今年27岁了” new_str='我是'+name+',今年'+ ...