我们需要把一块石头平稳的从地板上拿起来。石头的底面是多边形且各个部分的高度都一样,我们需要找出石头的重心。

input

测试案例  T;

每组第一行给出N,表示定点数。

接下来N行,每行连个数,表示坐标。定点按顺时针或逆时针给出。

output

  重心坐标。两个数中间一个空格,每个数保留两位小数。

思路

  把多变形分成N-2个三角形,求出重心,重心的质量。(其实是质心)

根据   x=Σ(xi*mi)/Σmi,有因为mi 正比于体积 正比于 面积。

所以利用叉乘求面积。

  1. #include"iostream"
  2. #include"cstdio"
  3. #include"cstring"
  4. #include"algorithm"
  5. using namespace std;
  6. struct Point
  7. {
  8. double x,y;
  9. };
  10. double Triangle(Point p0,Point p1,Point p2)
  11. {
  12. double s;
  13. s=p0.x*p1.y+p1.x*p2.y+p2.x*p0.y-p1.x*p0.y-p2.x*p1.y-p0.x*p2.y;
  14. //因为有规律,可以记一下。正:x 0->2,y比x大一,负:x 1->2->0,y比x小一。
  15. return s;
  16. }
  17. int main()
  18. {
  19. int i,j;
  20. int T,N;
  21. double x1,y1;
  22. Point p0,p1,p2;
  23. double x,y;
  24. double area,area0;
  25. scanf("%d",&T);
  26. while(T--)
  27. {
  28. scanf("%d",&N);
  29. scanf("%lf%lf",&p0.x,&p0.y);
  30. scanf("%lf%lf",&p1.x,&p1.y);
  31. x=0,y=0;
  32. area=0;
  33. for(i=2;i<N;i++)
  34. {
  35. scanf("%lf%lf",&p2.x,&p2.y);
  36. x1=p0.x+p1.x+p2.x;
  37. y1=p0.y+p1.y+p2.y;
  38. area0=Triangle(p0,p1,p2);
  39. area+=area0;
  40. x+=x1*area0;
  41. y+=y1*area0;
  42. p1=p2;
  43. }
  44. printf("%.2lf %.2lf\n",x/area/3,y/area/3);
  45. }
  46. return 0;
  47. }

Lifting the Stone的更多相关文章

  1. poj 1115 Lifting the Stone 计算多边形的中心

    Lifting the Stone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  2. Lifting the Stone(hdoj1115)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  3. (hdu step 7.1.3)Lifting the Stone(求凸多边形的重心)

    题目: Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  4. Lifting the Stone(求多边形的重心—)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...

  5. hdu 1115 Lifting the Stone 多边形的重心

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. Lifting the Stone(hdu1115)多边形的重心

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...

  7. hdu 1115:Lifting the Stone(计算几何,求多边形重心。 过年好!)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. hdu 1115 Lifting the Stone (数学几何)

    Lifting the Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. Lifting the Stone(多边形重心)

    Lifting the Stone Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  10. hdu1115 Lifting the Stone(几何,求多边形重心模板题)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:pid=1115">http://acm.hdu.edu.cn/showproblem.php ...

随机推荐

  1. WeChat Official Account Admin Platform Message API Guide

    Keyword: WeChat Message API Text Image Location Link Event Music RichMedia Author: PondBay Studio[We ...

  2. 【暑假】[基本数据结构]根据BFS与DFS确定树

    UVa10410 Tree Reconstruction 算法:根据BFS构造pos数组以区分关系,在此基础上对DFS序列操作.注:栈中存父结点,栈顶是最优先的父结点. 代码如下: #include& ...

  3. 《GettingThingsDone》--GTD学习笔记(二)-GTD实践指导

    一.准备阶段的建议: 高级的工作管理方法就是学会一套系统并付诸实施,直到将这套系统和方法融入你的工作和生活中. 通过行动使自己感觉良好,要比通过使自己感觉良好而进入一种较佳的行动状态容易的多. 当你在 ...

  4. CentOS VPS创建pptpd VPN服务

    原文地址http://www.hi-vps.com/wiki/doku.php?id=xen_vps_centos6_install_pptpd CentOS VPS创建pptpd VPN服务 Xen ...

  5. DWZ使用笔记

    DWZ使用笔记 一.前言     在最近的一个项目中,引入了DWZ这个富客户端框架,算是一次尝试吧.期间也遇到不少问题,总算一一解决了.特以此文记之.     本人用的是dwz-ria-1.4.5+A ...

  6. System.Rtti.TRttiObject.GetAttributes 简例

    MAttribute = class(TCustomAttribute) private FName: string; public constructor Create(AName: string) ...

  7. linux 和 android 源码的 cross reference (即网页浏览代码的引用)

    linux: http://lxr.free-electrons.com/               相当好 android: http://androidxref.com

  8. NLog 錯誤小記

    IISExpress使用NLog遇到寫入權限錯誤,特記錄下來: NLog配置文件中指定FileName時需要指定為當前目錄,如不指定會產生 拒絕訪問 錯誤, 估計為不指定當前目錄時會將文件寫入iise ...

  9. Hibernate HQL和原生SQL查询的一点区别

    1.createSQLQuery 1.1默认查询的结果为BigDecimal 1.2通过addScalar("CGD_ID", StandardBasicTypes.LONG)可以 ...

  10. MVC神韵---你想在哪解脱!(十一)

    为了实现这一处理,我们需要在MoviesController类中追加第二个Create方法.这个Create方法具有一个[HttpPost]属性,它意味着我们将要用它来处理提交到“/Movies/Cr ...