*HDU 1115 计算几何
Lifting the Stone
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7674 Accepted Submission(s): 3252
are many secret openings in the floor which are covered by a big heavy
stone. When the stone is lifted up, a special mechanism detects this and
activates poisoned arrows that are shot near the opening. The only
possibility is to lift the stone very slowly and carefully. The ACM team
must connect a rope to the stone and then lift it using a pulley.
Moreover, the stone must be lifted all at once; no side can rise before
another. So it is very important to find the centre of gravity and
connect the rope exactly to that point. The stone has a polygonal shape
and its height is the same throughout the whole polygonal area. Your
task is to find the centre of gravity for the given polygon.
input consists of T test cases. The number of them (T) is given on the
first line of the input file. Each test case begins with a line
containing a single integer N (3 <= N <= 1000000) indicating the
number of points that form the polygon. This is followed by N lines,
each containing two integers Xi and Yi (|Xi|, |Yi| <= 20000). These
numbers are the coordinates of the i-th point. When we connect the
points in the given order, we get a polygon. You may assume that the
edges never touch each other (except the neighboring ones) and that they
never cross. The area of the polygon is never zero, i.e. it cannot
collapse into a single line.
exactly one line for each test case. The line should contain exactly
two numbers separated by one space. These numbers are the coordinates of
the centre of gravity. Round the coordinates to the nearest number with
exactly two digits after the decimal point (0.005 rounds up to 0.01).
Note that the centre of gravity may be outside the polygon, if its shape
is not convex. If there is such a case in the input data, print the
centre anyway.
0 5
-5 0
0 -5
11 1
11 11
1 11
6.00 6.00
//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. 三角形面积公式:S = ( (x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1) ) / 2 ; 向量p2p1与向量p3p1叉积/2。
//因此做题步骤:1、将多边形分割成n-2个三角形,根据3公式求每个三角形面积。 //用向量面积 凹多边形时面积会在多边形外面。
// 2、根据2求每个三角形重心。
// 3、根据1求得多边形重心。 //当总面积是0的情况时注意后面除总面积。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
struct nod
{
double x,y;
};
double getarea(nod p0,nod p1,nod p2)
{
return ((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x))/;
}
int main()
{
int t,n;
nod p0,p1,p2;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
scanf("%lf%lf",&p0.x,&p0.y);
scanf("%lf%lf",&p1.x,&p1.y);
double sumarea=,sumx=,sumy=;
for(int i=;i<=n;i++)
{
scanf("%lf%lf",&p2.x,&p2.y);
double Area=getarea(p0,p1,p2);
sumarea+=Area;
sumx+=(p0.x+p1.x+p2.x)*Area/;
sumy+=(p0.y+p1.y+p2.y)*Area/;
p1=p2;
}
printf("%.2lf %.2lf\n",sumx/sumarea,sumy/sumarea);
}
return ;
}
*HDU 1115 计算几何的更多相关文章
- hdu 1115 Lifting the Stone
题目链接:hdu 1115 计算几何求多边形的重心,弄清算法后就是裸题了,这儿有篇博客写得很不错的: 计算几何-多边形的重心 代码如下: #include<cstdio> #include ...
- hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)
Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu 2108:Shape of HDU(计算几何,判断多边形是否是凸多边形,水题)
Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 2202 计算几何
最大三角形 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- *HDU 2108 计算几何
Shape of HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- HDU 5784 (计算几何)
Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...
- hdu 4720 计算几何简单题
昨天用vim练了一道大水题,今天特地找了道稍难一点的题.不过也不是很难,简单的计算几何而已.练习用vim编码,用gdb调试,结果居然1A了,没调试...囧... 做法很简单,无非就是两种情况:①三个巫 ...
- HDU 6205[计算几何,JAVA]
题目链接[http://acm.hdu.edu.cn/showproblem.php?pid=6206] 题意: 给出不共线的三个点,和一个点(x,y),然后判断(x,y)在不在这三个点组成的圆外. ...
- hdu 3320 计算几何(三维图形几何变换)
openGL Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
随机推荐
- struts2笔记(3)
关于回显: 如果是int型,默认就会回显为0,如果不想让回显,则Integer就好 //**************************************声明式验证************* ...
- Vi命令备忘
备忘 Ctrl+u:向文件首翻半屏: Ctrl+d:向文件尾翻半屏: Ctrl+f:向文件尾翻一屏: Ctrl+b:向文件首翻一屏: Esc:从编辑模式切换到命令模式: ZZ:命令模式下保存当前文件所 ...
- 小白请教几个关于Java虚拟机内存分配策略的问题
最近在看周志明所著的<深入理解Java虚拟机>,有几个问题不太明白,希望对虚拟机有研究的哥们儿帮我解答一下.先说一下我进行试验的环境: 操作系统:Mac OS X 10.11.6 EI C ...
- 【Java EE 学习 83 下】【SpringMVC】【使用注解替代已过时的API】【SpringMVC、Hibernate整合】
一.SpringMVC中注解的使用 1.为什么要使用注解 之前曾经提到过的三种控制器在spring3.0中都已经被明确标记为过时了,spring3.0推荐使用注解的方式替代三种控制器,实际上使用注解的 ...
- C++ 系列:内存布局
转载自http://www.cnblogs.com/skynet/archive/2011/03/07/1975479.html 为什么需要知道C/C++的内存布局和在哪可以可以找到想要的数据?知道内 ...
- Win10 UI入门 SliderRectangle
看了@段博琼大哥导航滑动的思路,自己又做了一个类似与黄油相机里面的一个功能 <Grid x:Name="> <Grid.ColumnDefinitions> < ...
- Knockout.js随手记(6)
实时反映对象属性的变化 在前一篇博客中我们使用了如下代码去新增user对象,即push方法: $("#btnAddUser").click(function () { vm.use ...
- 前端优化 - 打开速度1s
先看一下网页的加载流程: 1.解析html结构2.加载外部脚本和样式表文件3.解析并执行脚本(脚本会阻塞页面的加载)4.DOM树构建完成 (DOMContentLoaded)5.加载图片等外部文件6. ...
- C# 发送邮件中包含图片
List<string> To = new List<string>(); To.Add("jake_ge@askey.com.tw"); List< ...
- 在Sublime TEXT3中添加brogrammer-theme主题配色方案
喜欢用sublime text3的都知道原配的主题要么就是背景颜色太亮太累眼,要么就是配色太少不便于一眼看出哪有问题.所以在此推荐一个brogrammer-theme的主题,配色非常的全而且添加了扁平 ...