HDU 1115 Lifting the Stone(求多边形重心)
来源:互联网 发布:商品期货库存数据 编辑:程序博客网 时间:2024/05/18 22:15
题目链接:Click here~~
题意:
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 1000005struct Point{ int x,y;}P[N];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;}
- 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【多边形重心】
- HDU 1115 Lifting the Stone (多边形重心)
- HDOJ 1115 Lifting the Stone (求多边形重心坐标)
- HDU-#1115 Lifting the Stone(多边形重心)
- hdu acm 1115 Lifting the Stone(多边形重心)
- hdu 1115 Lifting the Stone (凸包求多边形重心)
- HDU 1115 Lifting the Stone ( 求多边形的重心:叉积)
- 求重心-hdu-1115-Lifting the Stone
- hdu 1115 Lifting the Stone (求重心)
- Hadoop背景介绍
- 特权级转换
- some type specifier 类型修饰符
- LoadRunner参数和变量之间的转换
- 初学Android,数据存储之SharedPreferences(四十一)
- HDU 1115 Lifting the Stone(求多边形重心)
- 选择编辑与编译工具-1
- MFC六大关键技术
- Linux 守护进程的编程方法
- Windows下制作Fedora 17的USB设备(U盘)安装镜像
- 每日一点
- C#抽象类和抽象方法
- 坑爹的dbank开发3
- objective-c block 详解