题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1115

题意:给你N个点围成的一个多边形,让你求这个多边形的重心。

题解:

将多边形划分为若干个三角形。
若我们求出了每个三角形的重心和质量,可以构造一个新的多边形,顶点为所有三角形的重心,顶点质量为三角形的质量。这个新多边形的质量和重心与原多边形相同,即可使用第一种类型的公式计算出整个多边形的重心。
由于三角形的面积与质量成正比,所以我们这里用面积代替质量来计算。 多边形有可能为凹多边形,三角形有可能在多边形之外。如何处理这种情况呢?
很简单,我们使用叉积来计算三角形面积,当三角形在多边形之外时,得到“负面积”就抵消掉了
(注意的是精度问题,将所有的除法最后算,这样能防止精度丢失)
 #include<cstdio>

 struct node{int x,y;}a,b,c;
int t,n;double s1,s2,s3,s4; double s(node x,node y,node z){return (double)(x.x*y.y+y.x*z.y+z.x*x.y-y.x*x.y-z.x*y.y-x.x*z.y)/;} int main(){
scanf("%d",&t);
while(t--){
s1=s2=s3=s4=;
scanf("%d",&n),scanf("%d%d",&a.x,&a.y),scanf("%d%d",&b.x,&b.y);
for(int i=;i<n;i++)
scanf("%d%d",&c.x,&c.y),s1=s(a,b,c),s2+=s1,s3+=(a.x+b.x+c.x)*s1,s4+=(a.y+b.y+c.y)*s1,b=c;
printf("%.2lf %.2lf\n",s3/s2/,s4/s2/);
}
return ;
}
												

hdu_1115_Lifting the Stone(求多边形重心)的更多相关文章

  1. hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)

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

  2. hdu1115 Lifting the Stone(几何,求多边形重心模板题)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1115">http://acm.hdu.edu.cn/showproblem.php ...

  3. UVALive 4426 Blast the Enemy! --求多边形重心

    题意:求一个不规则简单多边形的重心. 解法:多边形的重心就是所有三角形的重心对面积的加权平均数. 关于求多边形重心的文章: 求多边形重心 用叉积搞一搞就行了. 代码: #include <ios ...

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

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

  5. HDU 1115(求质量均匀分布的多边形重心 物理)

    题意是给一个 n 边形,给出沿逆时针方向分布的各顶点的坐标,求出 n 边形的重心. 求多边形重心的情况大致上有三种: 一.多边形的质量都分布在各顶点上,像是用轻杆连接成的多边形框,各顶点的坐标为Xi, ...

  6. HDOJ(1115)多边形重心

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

  7. poj 1115 Lifting the Stone 计算多边形的中心

    Lifting the Stone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. hdu 1115(多边形重心问题)

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

  9. hdu 1115(计算多边形重心)

    题意:已知一多边形没有边相交,质量分布均匀.顺序给出多边形的顶点坐标,求其重心. 分析: 求多边形重心的题目大致有这么几种: 1,质量集中在顶点上.n个顶点坐标为(xi,yi),质量为mi,则重心 X ...

随机推荐

  1. 字符串ID转换成字符串名字

    select  U.CnName+','  from f_splitstr('1828,1055333,1,1035681,752,494,22549,219,23860,478,23453,677, ...

  2. [Rails] 设计模式 MVC

    使用 MVC 的Web开发框架有很多,比如 PHP 的 Zend,Python 的 Django 和 Golang 的 Beego.这篇文章主要介绍一下 MVC 的基本概念. 何为MVC 为了明确一个 ...

  3. 部分服务器使用phpExcel会报错

    其中一个错误提示是:Fatal error: 'break' not in the 'loop' or 'switch' context in /var/www/htdocs/hanya/ThinkP ...

  4. CentOS6.3添加nginx系统服务详细说明

    今天虚拟机上配了下服务器整理了个这个 nginx 服务 要注意 - 短横杠这个符号看看复制进去后有没有乱码,我之前就遇到这个问题,郁闷了好久才发现 提示:顶部的注释不要去除否则无法注册为系统服务, 关 ...

  5. 神州数码品众_Android面试

    1.进程的定义,进程的调度: 2.线程的定义,多线程出错的描述: 3.数组和链表的定义和区别: 4.对链表的反序: 5.tree高度的计算: 6.设计一个存储系统,可以从客户端进行上传文件: 7.从长 ...

  6. 第八十九节,html5+css3pc端固定布局,热门旅游取,标题介绍区,旅游项目区

    html5+css3pc端固定布局,热门旅游取,标题介绍区,旅游项目区 样式: html代码: <!--主体--> <section class="zhu-ti" ...

  7. js-json教程从入门到使用

    json教程从入门到使用 2.json例子: var today_data={"city":"上海","area":"6400&q ...

  8. 创建简单的MVC项目

    一,新建一个空的MVC项目 二,连接数据库,添加一个实体模型Model.edmx

  9. html中的js监听付款按钮--触发ajax调用php后台--得到的json数据---交给安卓原生处理

    //01 var pay_status = new Object();$(".sure_pay").on("touchstart",function(){ va ...

  10. HDU 4520 小Q系列故事――最佳裁判(STL)

    小Q系列故事——最佳裁判 Problem Description 过去的2012年对小Q来说是很悲催的一年,失恋了12次,每次都要郁闷1个来月. 好在小Q是个体育迷,在最痛苦的时候,他常常用观看各种体 ...