hdu 1115 Lifting the Stone(求n边形的重心)
2014-06-04 18:45
281 查看
hdu 1115 Lifting the Stone
公式及推导见黑书P373
#include<stdio.h>
#include<string.h>
#define MAXN 1000005
struct point
{
double x,y;
}p[MAXN];
double cross(point a,point b)
{
return a.x*b.y-a.y*b.x;
}
int main()
{
int cas,n;
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
double sumx=0,sumy=0;
double area=0;
for(int i=0;i<n;i++)
{
double t=cross(p[i],p[(i+1)%n]);
area+=t/2;
sumx+=t*(p[i].x+p[(i+1)%n].x);
sumy+=t*(p[i].y+p[(i+1)%n].y);
}
double x=sumx/(6*area),
y=sumy/(6*area);
printf("%.2lf %.2lf\n",x,y);
}
return 0;
}
公式及推导见黑书P373
#include<stdio.h>
#include<string.h>
#define MAXN 1000005
struct point
{
double x,y;
}p[MAXN];
double cross(point a,point b)
{
return a.x*b.y-a.y*b.x;
}
int main()
{
int cas,n;
scanf("%d",&cas);
while(cas--)
{
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%lf%lf",&p[i].x,&p[i].y);
double sumx=0,sumy=0;
double area=0;
for(int i=0;i<n;i++)
{
double t=cross(p[i],p[(i+1)%n]);
area+=t/2;
sumx+=t*(p[i].x+p[(i+1)%n].x);
sumy+=t*(p[i].y+p[(i+1)%n].y);
}
double x=sumx/(6*area),
y=sumy/(6*area);
printf("%.2lf %.2lf\n",x,y);
}
return 0;
}
相关文章推荐
- hdu 1115 Lifting the Stone (重心问题)
- 多边心重心[nyoj 3 多边形重心问题, 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 Lifting the Stone 1115
- 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(多边形重心)