hdu 1115(计算多边形重心)
题意:已知一多边形没有边相交,质量分布均匀。顺序给出多边形的顶点坐标,求其重心。
分析:
求多边形重心的题目大致有这么几种:
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,质量分布不均匀。只能用积分来算,不会……
2.7.2 猜想n边形的重心
猜想由n个点(x1,y1), (x2,y2), ……, (xn,yn)
构成的多边形的重心的坐标是:( ( x1+x2...+xn )/n,( y1+y2+...+yn )/n );
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define esp 1e-7 using namespace std; struct Point{
double x,y;
Point(){}
Point(double x, double y):x(x),y(y){}
void input()
{
scanf("%lf%lf",&x,&y);
}
}; typedef Point Vector; Vector operator-(Vector A, Vector B)
{
return Vector(A.x-B.x, A.y-B.y);
} double Cross(Vector A, Vector B)
{
return A.x*B.y-A.y*B.x;
} double Area(Point A,Point B,Point C)
{
return Cross(B-A, C-A)/2.0;
} Point calZhongXing(Point *p, int n)//计算多边形重心
{
Point G;
int i;
double s,sumS=;
G.x=;G.y=;
for(i=;i<n-;i++)
{
s=Area(p[], p[i], p[i+]);
sumS+=s;
G.x+=(p[].x+p[i].x+p[i+].x)*s;
G.y+=(p[].y+p[i].y+p[i+].y)*s;
}
G.x=G.x/sumS/3.0;
G.y=G.y/sumS/3.0; return G;
} Point a[]; int main()
{
int T,i,n;
Point G;
scanf("%d",&T);
while(T--)
{ scanf("%d",&n);
for(i=;i<n;i++)
a[i].input();
G=calZhongXing(a, n);
printf("%.2lf %.2lf\n",G.x,G.y);
}
return ;
}
hdu 1115(计算多边形重心)的更多相关文章
- HDOJ(1115)多边形重心
Lifting the Stone http://acm.hdu.edu.cn/showproblem.php?pid=1115 题目描述:输入n个顶点(整数),求它们围成的多边形的重心. 算法:以一 ...
- POJ 3855 计算几何·多边形重心
思路: 多边形面积->任选一个点,把多边形拆成三角,叉积一下 三角形重心->(x1+x2+x3)/3,(y1+y2+y3)/3 多边形重心公式题目中有,套一下就好了 计算多边形重心方法: ...
- HDU 1115(求质量均匀分布的多边形重心 物理)
题意是给一个 n 边形,给出沿逆时针方向分布的各顶点的坐标,求出 n 边形的重心. 求多边形重心的情况大致上有三种: 一.多边形的质量都分布在各顶点上,像是用轻杆连接成的多边形框,各顶点的坐标为Xi, ...
- hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)
Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu 1115(多边形重心问题)
Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- poj 1115 Lifting the Stone 计算多边形的中心
Lifting the Stone Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- 【改革春风吹满地 HDU - 2036 】【计算几何-----利用叉积计算多边形的面积】
利用叉积计算多边形的面积 我们都知道计算三角形的面积时可以用两个邻边对应向量积(叉积)的绝对值的一半表示,那么同样,对于多边形,我们可以以多边形上的一个点为源点,作过该点并且过多边形其他点中的某一个的 ...
- hdu 1115 Lifting the Stone
题目链接:hdu 1115 计算几何求多边形的重心,弄清算法后就是裸题了,这儿有篇博客写得很不错的: 计算几何-多边形的重心 代码如下: #include<cstdio> #include ...
- Lifting the Stone(多边形重心)
Lifting the Stone Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
随机推荐
- iOS 网络处理注意点
原文链接:http://www.jianshu.com/p/a086c33566be 一. AFN 使用注意点 1. block循环引用 bug 解决 2.请求管理者 1.请求管理者存储到内存 请求管 ...
- Mysql笔记——DQL
DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECTselection_list /*要查询的列名称*/ FROM table_lis ...
- 针对安卓java入门:运算符和表达式
逻辑运算符 &&和&判断是一样的,区别在于过程,&会把整个过程算一遍,&&一旦碰到false就不会往下
- jQuery常见面试题(转)
代码以jQuery 1.83 为例 一 :Q: What is the difference between .get(), [], and .eq()? A: eq返回原生jQuery对象,截取某些 ...
- SQL语句 递归
--正向递归查询(根据ID查到自己和自己以下的所有数据) connect by prior a.id = a. parentid --反向递归查询(根据叶子ID查出自己和自己以上的根数据) ...
- CentOS单用户模式下修改ROOT密码和grub加密
Linux 系统处于正常状态时,服务器主机开机(或重新启动)后,能够由系统引导器程序自动引导 Linux 系统启动到多用户模式,并提供正常的网络服务.如果系统管理员需要进行系统维护或系统出现启动异常时 ...
- Java:装饰设计模式
装饰设计模式: 当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能, 并提供加强功能,那么自定义的该类就称为装饰类. 装饰类通常通过构造方法接收被装饰的对象,并基于被装饰的对 ...
- java Cache框架
Cache框架乱炖 各类开源的缓存解决方案 JBossCache/TreeCacheJBossCache是一个复制的事务处理缓存,它允许你缓存企业级应用数据来更好的改善性能.缓存数据被自动复制,让 ...
- Android提供了5种方式存储数据:
--使用SharedPreferences存储数据: --文件存储数据: --SQLite数据库存储数据: --使用ContentProvider存储数据: --网络存储数据: 一:使用SharedP ...
- Java —— 时区(夏令时)问题
有没有遇到过这样的情况:数据库里的是时间是“1991-4-14”,但是Java取出来后就成了“1991-4-13”. 解决方法一: 先把时区设成GMT,把 根据夏时制自动调节时钟 的选项去掉. 再把时 ...