求多边形重心的题目大致有这么几种: 
1、质量集中在顶点上 
    n个顶点坐标为(xi,yi),质量为mi,则重心 
  X = ∑( xi×mi ) / ∑mi 
  Y = ∑( yi×mi ) / ∑mi 
  特殊地,若每个点的质量相同,则 
  X = ∑xi / n 
  Y = ∑yi / n 
2、质量分布均匀 
  特殊地,质量均匀的三角形重心: 
  X = ( x0 + x1 + x2 ) / 3 
  Y = ( y0 + y1 + y2 ) / 3 
3、质量分布不均匀 
    只能用函数多重积分来算,不太会 
这题的做法: 
将n边形分成多个三角形,分别求出重心坐标以及质量m【因为质量分布均匀,所以可以设密度为1,则面积就是质量】 
因为质量都集中在重心 
所以把所有求出来的重心按逆时针连接起来又是一个多边形 
但是这个多边形的质量集中在顶点上

所以可以利用上面公式进行计算

参考博客:http://www.acmerblog.com/hdu-1115-Lifting-the-Stone-1399.html

#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;const int N = 1000000;
struct point
{double x;double y;
}p[N],g;double crossProd(point A, point B, point C)
{return (B.x-A.x)*(C.y-A.y) - (B.y-A.y)*(C.x-A.x);
}void compGravity(int n)
{                           //求重心 point tmp;double sumArea, area;sumArea = 0;g.x = g.y = 0;for (int i=2; i<n; ++i) {area = crossProd(p[0], p[i-1], p[i]);sumArea += area;tmp.x = p[0].x + p[i-1].x + p[i].x;tmp.y = p[0].y + p[i-1].y + p[i].y;g.x += tmp.x * area;g.y += tmp.y * area;}g.x /= (sumArea * 3.0);g.y /= (sumArea * 3.0);
}int main()
{int t;scanf ("%d", &t);while (t--) {int n;scanf ("%d", &n);//顶点以逆时针方向给出 for (int i=0; i<n; ++i) scanf ("%lf%lf", &p[i].x, &p[i].y);compGravity(n);printf ("%.2lf %.2lf\n", g.x, g.y);}return 0;
}

hdu 1115(多边形重心)相关推荐

  1. HDU 1115 Lifting the Stone(求多边形重心)

    HDU 1115 大意:给你个n,有n个点,然后给你n个点的坐标,求这n个点形成的多边形的重心的坐标. 1 struct point 2 { 3 double x, y; 4 } P[1000010] ...

  2. HDOJ(1115)多边形重心

    Lifting the Stone http://acm.hdu.edu.cn/showproblem.php?pid=1115 题目描述:输入n个顶点(整数),求它们围成的多边形的重心. 算法:以一 ...

  3. 南阳 3 多边形重心问题(数学几何)

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接), ...

  4. POJ 3855 计算几何·多边形重心

    思路: 多边形面积->任选一个点,把多边形拆成三角,叉积一下 三角形重心->(x1+x2+x3)/3,(y1+y2+y3)/3 多边形重心公式题目中有,套一下就好了 计算多边形重心方法: ...

  5. NYOJ 3:多边形重心问题

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接), ...

  6. 不规则多边形重心求解

    文章目录 一.不规则多边形重心求解 1.1 三角形重心计算方法 1.2 三角形面积计算方法 1.3 多边形面积的计算方法 1.4 不规则多边形的重心计算方法 一.不规则多边形重心求解 1.1 三角形重 ...

  7. java计算一个多边形的重心_多边形重心问题 java

    多边形重心问题 java 看题目 点这里 题目描述: 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以 ...

  8. java计算一个多边形的重心_Java多边形重心计算

    多边形重心计算 三角形重心 顶点为a,b,c的三角形重心为x = (xa + xb + xc) / 3,y = (ya + yb + yc) / 3 多边形重心 x = (x1w1 + x2w2 + ...

  9. 【JAVA】多边形重心计算

    多边形重心计算 三角形重心 顶点为a,b,c的三角形重心为x = (xa + xb + xc) / 3,y = (ya + yb + yc) / 3 多边形重心 x = (x1w1 + x2w2 + ...

最新文章

  1. webpack 搭建rect项目
  2. [ARM异常]-图解armv7/armv8的异常向量表和基地址
  3. 公共互联网网络安全突发事件应急预案_安徽新规:发生重大突发事件,官方5小时内必须发声...
  4. php中的unbuffered_row,php – 加载数据infile和unbuffered查询错误
  5. decltype 和 auto
  6. 无需复杂插件即可从Eclipse启动和调试Tomcat
  7. 【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤
  8. 剑指offer-JZ9 用两个栈实现队列(C++,附思路)
  9. 【长沙集训】2017.10.28
  10. Js与flash交互:在html页面中用js与MyReport插件交互
  11. 使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
  12. lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
  13. codevs 1029 遍历问题
  14. centos普通用户和root用户之间相互切换
  15. qq拼音输入法下载|qq拼音输入法纯净版下载
  16. Debug调试工具使用
  17. 高等数学学习笔记——第十二讲——正项级数收敛性判别方法
  18. 嫌自己不够佛系?智能佛珠了解一下
  19. 【汇编实战开发笔记】80x86汇编基础的三大块知识
  20. 【计算机网络】手机连接电脑热点实现上网以及捕包

热门文章

  1. 2018-2019-1 20165318 20165322 20165326 实验一 开发环境的熟悉
  2. 'objects' 报错问题
  3. 【特征选择】嵌入式特征选择法
  4. Sublime Text3 如何安装、删除及更新插件
  5. 两个js文件同时执行,解决覆盖问题
  6. fastreport 中 给数值形数据做 格式 保留小数位数以0补足
  7. gan semi conductor
  8. 有用就存档,没用就删除,当日清理当日的email
  9. pct_change()
  10. 工业界和学术界的思考