zoukankan      html  css  js  c++  java
  • poj 1385Lifting the Stone解题报告

    任意质量分布均匀的多边形的重心位置,可以假定其单位面积质量为1,则面积即可表示质量,而对于质量分布均匀的多边形的重心,需要先以任意一个顶点为参考点,把多边形分为多个三角形,分别求这些三角形的重心位置,此时多边形的质量全在每个三角形的重心上了,即在顶点上,此时,就可以使用gx=Σ(xi*areai)/Σ(areai),gy=Σ(yi*areai)/Σ(areai)期中xi,yi为第i个三角形的中心位置,areai为第i个三角形的面积

    View Code
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #define N 1000005
     5 using namespace std;
     6 struct point
     7 {
     8     double x,y;
     9 };
    10 point p[N];
    11 double cross(point p1,point p2,point p3)
    12 {
    13     return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x);
    14 }
    15 int main()
    16 {
    17     int t;
    18     int i,j,k,n;
    19     double area,sum,gx,gy,x1,y1;
    20     scanf("%d",&t);
    21     while(t--)
    22     {
    23         scanf("%d",&n);
    24         for(i=0;i<n;i++)
    25         scanf("%lf%lf",&p[i].x,&p[i].y);
    26         gx=gy=sum=0.0;
    27         for(i=1;i<n-1;i++)
    28         {
    29             area=cross(p[0],p[i],p[i+1]);
    30             sum+=area;
    31             x1=(p[0].x+p[i].x+p[i+1].x);
    32             y1=(p[0].y+p[i].y+p[i+1].y);
    33             gx+=(x1*area);
    34             gy+=(y1*area);
    35         }
    36         gx/=(sum*3);
    37         gy/=(sum*3);
    38         printf("%0.2lf %0.2lf\n",gx,gy);
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    读《淘宝数据魔方技术架构解析》有感
    架构之谈
    读《蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践》有感
    第八周周总结
    hadoop安装和配置
    第七周周总结
    [BZOJ]2836: 魔法树
    [BZOJ]4540: [Hnoi2016]序列
    [BZOJ]1511: [POI2006]OKR-Periods of Words
    [BZOJ]1116: [POI2008]CLO
  • 原文地址:https://www.cnblogs.com/caozhenhai/p/2538951.html
Copyright © 2011-2022 走看看