熬夜肝没了

多边形面积的最长平分线

描述

平分凸多边形面积的线段有无数条,求其中最长的线段长度。

输入

第一行是凸多边形的顶点数n (3<=n<=5000),接下来是n行顶点坐标,按逆时针顺次输入。

n

x1 y1

. . .

xn yn

输出

所有平分该多边形面积的线段中,最长的长度值。结果保留6位小数。

把自己卡到的点:

  1. 点乘、叉乘    进一步理解判断点在直线的左右侧问题
  2. 平面多边形坐标计算公式   ->鞋带定理  (注意回龙关系 最后的n-1要和0进行关联)
  3. 逆时针的顺序进行组合三角形 防止重叠面积
  4. 向量λ比例切割求坐标 ->同高三角形的面积比为底边边   (AP=0P-OA,AP=λAB,OP=AP+0A)
  5. 平面直线计算公式
#include<iostream>
#include<cmath>
#include<iomanip>
using namespace std;
#define zero 1E-8
typedef struct{double x;double y;
}Point;
double S_new_calc(Point a,Point b,Point c){double t1,t2,t3,t4,t5,t6,sum;t1=a.x*b.y;t2=a.y*b.x;t3=b.x*c.y;t4=b.y*c.x;t5=c.x*a.y;t6=c.y*a.x;sum=0.5*fabs(t1+t3+t5-t2-t4-t6);return sum;
}
double vec_calc(Point a,Point b,double k,Point base){double tx,ty;double vx,vy,dis;vx=b.x-a.x,vy=b.y-a.y;vx=k*vx,vy=k*vy;tx=vx+a.x,ty=vy+a.y;dis=sqrt( (base.x-tx)*(base.x-tx) + (base.y-ty)*(base.y-ty) );return dis;
}
int main(){Point* point;int i,n,index1,index2,*index;double S,S_new,S_test,k,max,dis;S=S_new=S_test=max=0;cin>>n;point = new Point[n+20];index = new int[n+20];for(i=0;i<n;i++) cin>>point[i].x>>point[i].y;    for(i=0;i<n-1;i++){ //多边形面积 S= S + (point[i].x*point[i+1].y - point[i].y*point[i+1].x);}S= S + (point[n-1].x*point[0].y - point[n-1].y*point[0].x);S=fabs(S)/2.0;for(i=0;i<n;i++){ //各点为首的分割体 S_new=S_test=0;index[0]=i;for(int j=1;j<n;j++) if(j+i<n) index[j]=j+i;else if(j+i>=n) index[j]=j+i-n;
//      for(int j=0;j<n;j++) cout<<index[j]<<" ";
//      cout<<endl;index1=1,index2=index1+1;while(true){S_test=S_test+S_new_calc(point[index[index1]],point[index[index2]],point[index[0]]);if(S_test-S/2>=zero) break;S_new=S_test;index1=index2++;}
//      cout<<setiosflags(ios::fixed)<<setprecision(6)<<"S:"<<S<<" S_test:"<<S_test<<endl;k=(S*0.5-S_new)/(S_test-S_new);    dis=vec_calc(point[index[index1]],point[index[index2]],k,point[index[0]]);max=dis-max>zero?dis:max;}cout<<setiosflags(ios::fixed)<<setprecision(6)<<max;delete []point;delete []index;return 0;
}

多边形面积的最长平分线的依托答辩记录相关推荐

  1. 使用计算机计算一个多边形,多边形面积计算器

    多边形面积计算器顾名思义是一款能够计算多边形面积的软件.而且软件支持手绘功能,还可以将喜欢的图片作为绘画的底图,软件界面变为可调节大小,这样就可以把绘图区域.坐标表格区域任意调整,方便坐标输入和绘制大 ...

  2. 用“平面两点距离”求三角形面积及多边形面积

    不小于 3 边的多边形,都可以任一顶点发出的边切分为 n - 2 个三角形. [学习的细节是欢悦的历程] Python 官网:https://www.python.org/ Free:大咖免费&quo ...

  3. pku 2954 Triangle pku 1265 Area Pick定理的应用 + 叉积求多边形面积

    Pick定理证明:http://translate.google.com/translate?u=http://episte.math.ntu.edu.tw/articles/sm/sm_25_10_ ...

  4. hdu2036(多边形面积)

    Description " 改革春风吹满地,  不会AC没关系;  实在不行回老家,  还有一亩三分地.  谢谢!(乐队奏乐)" 话说部分学生心态极好,每天就知道游戏,这次考试如此 ...

  5. 多边形面积(Area_Of_Polygons)

    原理: 任意多边形的面积可由任意一点与多边形上依次两点连线构成的三角形矢量面积求和得出. 分析:  由于给出的点是相对于我们的坐标原点的坐标,每个点实际上我们可以当作一个顶点相对于原点的向量,如下图所 ...

  6. poj 1654 Area 多边形面积

    /* poj 1654 Area 多边形面积题目意思很简单,但是1000000的point开不了 */ #include<stdio.h> #include<math.h> # ...

  7. 观星(计算几何/凸包/多边形面积)

    观星 对于平面上有n个点分为三类,要求寻找一个三角形,三个顶点分别属于这三类,求解最大面积. N<=3000 首先考虑到O(n2)O(n^2)O(n2)的枚举,然后对于另外一种考虑这个点的位置, ...

  8. 三角剖分求多边形面积的交 HDU3060

    1 //三角剖分求多边形面积的交 HDU3060 2 3 #include <iostream> 4 #include <cstdio> 5 #include <cstr ...

  9. HDOJ-2036 求多边形面积

    求给定的多边形面积,首先可以分割为数个三角形,分别求面积,最后累加即可. 对上图而言,多边形的面积就是:(S:1,a:2,b:3,c:4,d:5,e:6) S(1->6) = S(1,2,3) ...

最新文章

  1. swift 跳转网页写法
  2. 持续集成篇-- SonarQube代码质量管理平台的安装
  3. 深度案例 | 纷享销客:用户需求精准洞察下的敏捷开发
  4. pid matlab 温度控制,基于MatlabPID温控系统设计与仿真.doc
  5. TensorFlow和ML前5名的课程
  6. JAVA MYSQL从数据库中提取图片_java web将图片存到储数据库和从数据库中读取图片...
  7. Bootstrap HTML 编码规范之语言属性
  8. go语言:200行代码做udp rtp转发并发分布服务器
  9. VB.NET工作笔记005---用visual studio2017 编写WCF vb.net webservice
  10. webpack构建工具快速上手指南
  11. 确认从博客园搬家到FPA博客园
  12. 服务器有些系统更新不能卸载,微软 Win10 更新 KB4577586 发布:永久删除 Adobe Flash Player,补丁无法卸载...
  13. 发邮件+实习+简历+
  14. chm转过程html,Word文档转换成chm技巧
  15. 【2015NOIP普及组】T4:推销员 试题解析
  16. 苹果手机怎么编辑word文档_有关PDF编辑神器,转换word文档不在话下
  17. 达尔文流媒体服务器搭配
  18. 样本均值和样本方差的无偏性证明、正态分布样本方差的方差
  19. 程序员成长之旅——Delphi实现一个简单的科学计算器
  20. Prolog教程 8

热门文章

  1. 【C生万物】 初识篇(02)
  2. ppst技术视频——eclipse 安装tomcat插件的方法
  3. 慢慢欣赏linux dsa驱动
  4. 7-42 就不告诉你
  5. 关于机器学习中的朴素贝叶斯以及拉普拉斯平滑
  6. Audio/Video会触发的方法和事件分别有哪些
  7. steam搬砖项目:靠谱吗,细说下搬砖的核心内容
  8. 接触角的计算----寻找气液固三相的交点
  9. 球迷输球迁怒“保罗” 德章鱼销售量大幅上升
  10. 【枚举】CF809A