HDU 1115

大意:给你个n,有n个点,然后给你n个点的坐标,求这n个点形成的多边形的重心的坐标。

 1 struct point
 2 {
 3     double x, y;
 4 } P[1000010];
 5
 6 struct line
 7 {
 8     point a, b;
 9 } ;
10
11 double xmult(point p1, point p2, point p)
12 {
13     return (p1.x-p.x)*(p2.y-p.y) - (p2.x-p.x)*(p1.y-p.y);
14 }
15
16 point intersection(line u,line v){
17     point ret=u.a;
18     double t=((u.a.x-v.a.x)*(v.a.y-v.b.y)-(u.a.y-v.a.y)*(v.a.x-v.b.x))
19             /((u.a.x-u.b.x)*(v.a.y-v.b.y)-(u.a.y-u.b.y)*(v.a.x-v.b.x));
20     ret.x+=(u.b.x-u.a.x)*t;
21     ret.y+=(u.b.y-u.a.y)*t;
22     return ret;
23 }
24
25 point barycenter(point a,point b,point c){
26     line u,v;
27     u.a.x=(a.x+b.x)/2;
28     u.a.y=(a.y+b.y)/2;
29     u.b=c;
30     v.a.x=(a.x+c.x)/2;
31     v.a.y=(a.y+c.y)/2;
32     v.b=b;
33     return intersection(u,v);
34 }
35
36 ///多边形重心
37 point Barycenter(int n,point* p){
38     point ret,t;
39     double t1=0,t2;
40     int i;
41     ret.x=ret.y=0;
42     for (i=1;i<n-1;i++)
43         if (fabs(t2=xmult(p[0],p[i],p[i+1]))>eps){
44             t=barycenter(p[0],p[i],p[i+1]);
45             ret.x+=t.x*t2;
46             ret.y+=t.y*t2;
47             t1+=t2;
48         }
49     if (fabs(t1)>eps)
50         ret.x/=t1,ret.y/=t1;
51     return ret;
52 }
53
54 int T;
55 int n;
56
57 void Solve()
58 {
59     scanf("%d", &T);
60     while(T--)
61     {
62         scanf("%d", &n);
63         for(int i = 0; i < n; ++i)
64         {
65             scanf("%lf%lf", &P[i].x, &P[i].y);
66         }
67         point t = Barycenter(n, &P[0]);
68         printf("%.2lf %.2lf\n", t.x+eps, t.y+eps);
69     }
70 }

HDU 1115

转载于:https://www.cnblogs.com/Silence-AC/p/3680271.html

HDU 1115 Lifting the Stone(求多边形重心)相关推荐

  1. ACM求多边形重心和面积问题

    描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段 ...

  2. hdu 1115(多边形重心)

    求多边形重心的题目大致有这么几种:  1.质量集中在顶点上      n个顶点坐标为(xi,yi),质量为mi,则重心  X = ∑( xi×mi ) / ∑mi  Y = ∑( yi×mi ) / ...

  3. HDOJ(1115)多边形重心

    Lifting the Stone http://acm.hdu.edu.cn/showproblem.php?pid=1115 题目描述:输入n个顶点(整数),求它们围成的多边形的重心. 算法:以一 ...

  4. 南阳 3 多边形重心问题(数学几何)

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接), ...

  5. HDU 2036 改革春风吹满地(求多边形面积)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2036 改革春风吹满地 ...

  6. POJ 3855 计算几何·多边形重心

    思路: 多边形面积->任选一个点,把多边形拆成三角,叉积一下 三角形重心->(x1+x2+x3)/3,(y1+y2+y3)/3 多边形重心公式题目中有,套一下就好了 计算多边形重心方法: ...

  7. NYOJ 3:多边形重心问题

    多边形重心问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接), ...

  8. nyoj 3 多边形重心问题

    描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段 ...

  9. java计算一个多边形的重心_多边形重心问题 java

    多边形重心问题 java 看题目 点这里 题目描述: 描述 在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以 ...

最新文章

  1. 涵盖18+ SOTA GAN实现,这个图像生成领域的PyTorch库火了
  2. php artisan 出错,Laravel 5.2 php artisan migrate:回滚错误
  3. Win Form登录机制的实现
  4. XML--使用XML来将字符串分隔成行数据
  5. java占位符填充_Java使用freemark生成word
  6. php. 调试工具.trace
  7. 全国地图poi数据下载
  8. PCS7服务器数据包安装位置,PCS7中应用PH服务器的配置问题
  9. 某型火炮随动控制系统测试研究
  10. 常用设备管理口默认用户名密码汇总
  11. java poi pdf实例_java通过poi导出excel和pdf
  12. 最新GEM技术导航系统开心版源码+免授权
  13. java+单子_Java单子模式
  14. 如何做一个基于微信校园运动场地预约小程序系统毕业设计毕设作品
  15. 国产化7K325T板卡学习资料: 基于国产化Ch-7K325T 的 FMC接口PCIe卡 国产化板卡
  16. python画图---matplotlib安装教程
  17. java四则运算考试系统_小学生四则运算出题软件-基于java控制台的实现
  18. JAVA通过epublib解析EPUB格式的电子书
  19. ❤️一文掌握HTML+CSS+JS开发小说阅读器❤️
  20. 计算机辅助制图教学设计,高中信息技术 计算机辅助制图教案 苏教版

热门文章

  1. win10 EFI装ubuntu14.04双系统 及初始配置
  2. 一名游戏开发者的告白
  3. 浮动5-常用列表显示(案例)
  4. Sharepoint 自定义字段类型
  5. 谷歌也被逼出局域网了 baidu从此天下无敌
  6. !Important:CSS中!important的作用用于Ie6.0 与Ie7.0、firefox
  7. 前向渲染路径细节 Forward Rendering Path Details
  8. 删除U盘作为启动盘的隐藏启动分区
  9. CCIE试验备考之交换security(2)
  10. Android JNI(Java Native Interface)技术介绍