HDU 1115 Lifting the Stone(求多边形重心)
2012-09-06 15:02
405 查看
题目链接:Click here~~
题意:
RT。
解题思路:
http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html
求重心时需要注意的地方:
1、总面积为0的时候,因为总面积会作除数。(本题没有出现)
2、面积要用有向面积。(考虑凹多边形的情况,如下图)
题意:
RT。
解题思路:
http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html
求重心时需要注意的地方:
1、总面积为0的时候,因为总面积会作除数。(本题没有出现)
2、面积要用有向面积。(考虑凹多边形的情况,如下图)
#include <math.h> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; #define N 1000005 struct Point { int x,y; }P ; const double eps = 1e-6; int sgn(double x) { return fabs(x)<eps ? 0 : (x > eps ? 1 : -1); } double Dis(const Point& p1,const Point& p2) { return sqrt( (p1.x-p2.x)*(p1.x-p2.x) + (p1.y-p2.y)*(p1.y-p2.y)*1.0); } double Cross(const Point& p1,const Point& p2,const Point& p3,const Point& p4) { return (p2.x-p1.x)*(p4.y-p3.y) - (p2.y-p1.y)*(p4.x-p3.x); } double Area(const Point& p1,const Point& p2,const Point& p3) { return Cross(p1,p2,p1,p3); } double CGx(const Point& p1,const Point& p2,const Point& p3) { return (p1.x+p2.x+p3.x)/3.0; } double CGy(const Point& p1,const Point& p2,const Point& p3) { return (p1.y+p2.y+p3.y)/3.0; } int main() { int z,n; double ansx,ansy,sum; scanf("%d",&z); while(z--) { scanf("%d",&n); for(int i=0;i<n;i++) scanf("%d%d",&P[i].x,&P[i].y); ansx = ansy = sum = 0; for(int i=1;i<n-1;i++) { double area = Area(P[0],P[i],P[i+1]); ansx += CGx(P[0],P[i],P[i+1]) * area; ansy += CGy(P[0],P[i],P[i+1]) * area; sum += area; } printf("%.2f %.2f\n",ansx/sum,ansy/sum); } return 0; }
相关文章推荐
- 多边心重心[nyoj 3 多边形重心问题, hdu 1115 Lifting the Stone]
- hdu 1115 Lifting the Stone【求多边形重心】
- hdu-1115 Lifting the Stone(求多边形的重心)
- HDU 1115 Lifting the Stone(多边形重心)
- hdu1115 Lifting the Stone (求多边形重心)
- HDU 1115 Lifting the Stone(求多边形重心)
- HDU 1115 Lifting the Stone (多边形重心)
- hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)
- hdu 1115 Lifting the Stone【多边形重心】
- HDU 1115 Lifting the Stone 计算几何(多边形找重心)
- hdu_1115_Lifting the Stone(求多边形重心)
- hdu 1115 Lifting the Stone【多边形重心】
- hdu_1115_Lifting the Stone(求多边形重心)
- HDU 1115 Lifting the Stone 多边形的重心
- hdu 1115 Lifting the Stone(求取多边形的重心)
- hdu1115 Lifting the Stone(几何,求多边形重心模板题)
- HDU 1115 Lifting the Stone ( 求多边形的重心:叉积)
- HDU 1115 Lifting the Stone (求多边形的重心)
- hdu 1115 Lifting the Stone 多边形的重心
- hdu 1115 Lifting the Stone 多边形的重心