描述

在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段的连接后的图形; 
如果是一条线段,我们定义面积为0,重心坐标为(0,0).现在求给出的点集组成的图形的面积和重心横纵坐标的和;

输入
第一行有一个整数0<n<11,表示有n组数据;
每组数据第一行有一个整数m<10000,表示有这个多边形有m个顶点;
输出
输出每个多边形的面积、重心横纵坐标的和,小数点后保留三位;
样例输入
3
3
0 1
0 2
0 3
3
1 1
0 0
0 1
4
1 1
0 0
0 0.5
0 1

样例输出

0.000 0.000
0.500 1.000
0.500 1.000

原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=3

思路:
求多边形面积:将n边形分割为n-2个三角形,分别求三角形面积,又因为已知顶点坐标,所以可以根据向量来求,
原点到
某顶点的确定的向量就是这个顶点的坐标,设顶点为 p1, p2, ..., pk, 则面积s

具体证明见链接:http://blog.csdn.net/hemmingway/article/details/7814494

对于重心, 设每个三角形面积为st, 对应向量为(x1, y1), (x2, y2), 那么x方向:(x1+x2)/3, y方向: (y1+y2)/3,假设总面积为s, 那么每个三角形权重为st/s, 那么

重心坐标为各个三角形重心乘以其面积求和后除以s,

具体证明见链接:http://blog.sina.com.cn/s/blog_6bc4930c01011xcd.html


代码:

#include<stdio.h>
#include<math.h>
#define M 10010
#define INF 0.0001
typedef struct Node
{double x;double y;
}Node;int main()
{Node m[M];int T, t;double temp, s, gra_x, gra_y; scanf("%d", &T);while(T--){ s = 0.0; gra_x = 0.0; gra_y = 0.0;scanf("%d", &t);for(int i = 0; i < t; i++){scanf("%lf%lf", &m[i].x, &m[i].y);}for(int i = 1; i <= t; i++){temp = (m[i%t].x*m[i-1].y - m[i%t].y*m[i-1].x)/2.0;s += temp;gra_x += temp*(m[i%t].x + m[i-1].x)/3.0;gra_y += temp*(m[i%t].y + m[i-1].y)/3.0;} if(s > -INF && s < INF){printf("0.000 0.000\n"); continue;}printf("%0.3f %0.3f\n", s, (gra_x+gra_y)/s);          } return 0;
}

ACM求多边形重心和面积问题相关推荐

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

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

  2. POJ1279(求多边形内核的面积)

    题目:Art Gallery 先求出内核,然后再求多边形的面积就行. /* Goujinping 2013.4.12 NEFU The masterplate of Polygon kernel. N ...

  3. HDOJ(1115)多边形重心

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

  4. hdu 1115(多边形重心)

    求多边形重心的题目大致有这么几种:  1.质量集中在顶点上      n个顶点坐标为(xi,yi),质量为mi,则重心  X = ∑( xi×mi ) / ∑mi  Y = ∑( yi×mi ) / ...

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

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

  6. HDU 2036 改革春风吹满地(求多边形面积)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036 改革春风吹满地 ...

  7. 三角剖分求多边形面积的交 HDU3060

    1 //三角剖分求多边形面积的交 HDU3060 2 3 #include <iostream> 4 #include <cstdio> 5 #include <cstr ...

  8. 使用行列式公式求多边形面积

    namespace SKJZ {namespace lib{public struct Point { public float x, y;}public class Polygon{/// < ...

  9. 给定点坐标求多边形面积模板

    给定点坐标求多边形面积模板 方法:利用向量叉积求三角形面积的方法,把多边形分割成若干个三角形,然后求和得到多边形面积,计算时需要注意,给定的点的顺序必须是逆时针或者顺时针. 逆时针的方向是叉积的正方向 ...

最新文章

  1. 鸟哥的Linux私房菜基础学习篇(第二版)第十二章课后习题与答案
  2. pandas将df赋值到另一个df_Python pandas将多级列标题df映射到另一个df
  3. 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果)
  4. TTS技术简单介绍和Ekho(余音)TTS的安装与编程
  5. 【BZOJ1012】最大数maxnumber,疯狂CE的线段树练习
  6. Centos7的 git: 未找到命令解决方法
  7. android便签的作用,安卓手机中的便签有什么用?
  8. php操作mysql常用_PHP常用MySql操作
  9. 如何用“云崽(Yunzai)”搭建一个原神群机器人(转载)
  10. SAP SD pricing condition技术在系统里的一些练习
  11. 使得在虚拟机能复制粘贴 -- Linux安装增强
  12. multisim 9013、8050免费下载
  13. GPIO 模拟SPI
  14. 《Linux管理与应用》课程考核方案
  15. 华为在线笔试题-python
  16. 券商Robinhood大量客户被最低价格强平-交易成本拉大500倍,游戏驿站GME只能平仓不能开仓-看看行政总裁Vlad Tenev是如何回复这些问题的?
  17. 详解C语言实现植物大战僵尸阳光9999
  18. Android 中的“后台无效动画“行为分析
  19. 信息系统规划工具中的各种矩阵
  20. Flarum部署:从源码到docker到放弃

热门文章

  1. [Kaggle]泰坦尼克号沉没预测
  2. 【论文笔记】用循环一致性避免形变场重叠的医学图像配准网络
  3. 第二章 软件项目确立
  4. 2020年中国新基建人工智能产业链全景图深度分析汇总(附完整企业名单)
  5. 随笔2022.12.6
  6. linux使用tmux后台运行程序
  7. 一个人的心态好比琴弦
  8. matlab 死区,matlab中怎么产生死区
  9. 2017-2020(4周年)读书年度总结及书单
  10. python io多路复用_【python】-- IO多路复用(select、poll、epoll)介绍及实现