当前位置: 首页 > news >正文

高仿卡地亚手表网站最新一键自助建站程序源码

高仿卡地亚手表网站,最新一键自助建站程序源码,泉州模板自助建站,邢台市官网前置知识#xff1a;凸包 摘录oiwiki 在平面上能包含所有给定点的最小凸多边形叫做凸包。 其定义为#xff1a;对于给定集合 X#xff0c;所有包含 X 的凸集的交集 S 被称为 X 的 凸包。 说人话就是用一个橡皮筋包含住所有给定点的形态 如图#xff1a; 正题#xff1a…前置知识凸包 摘录oiwiki 在平面上能包含所有给定点的最小凸多边形叫做凸包。 其定义为对于给定集合 X所有包含 X 的凸集的交集 S 被称为 X 的 凸包。 说人话就是用一个橡皮筋包含住所有给定点的形态 如图 正题Graham求凸包 过程 Graham求凸包的过程是 1选一个点其它点以它作为标准将其他点进行极角排序 两种方法建议使用atan2(懒) atan2用法atan2(横坐标纵坐标注以选择的点为原点的坐标 2从最低的点开始这能保证第一个点一定在凸包内枚举 分成两种情况 if 上一个点在这个点的左边{将这个点加入答案 } else{将这个点pop }此处可用叉积判断左右叉积学习 3连接第一个点与最后一个点 分析时间复杂度 处理时每个点只会一次即为O(n),n为点数还有角排序的O(nlog(n)),总体为O(nnlog(n)) 实例 如果下一个点在右边像这样 (原应从第一个点连了第二点后直接连最右下的点但我这画错了致歉 很明显将上一个点排出因为当前的点劣于当前点当前点在上个点右边 变成了这样 发现当前的点还是优于最后一个点在其右排出 在上一点的左边加入 其它的都在左边不在赘述 结果就是 有一个很好的演示视频放在这看了就去支持那个up吧sto颓废orz 演示视频 代码实现 模版 First,初始化每个点的极角度数此处为atan2实现 //p是存点的x是行y是列与平面直角坐标系完全相反//p[1]是最低的点以p[1]为原点for(int i1;in;i){p[i].angleatan2(p[i].x-p[1].x,p[i].y-p[1].y);}Second,排序以极角排(大的先)相同就以在p[1]右来排序 bool cmp(node x,node y){if(x.angley.angle){return ju(x,p[1])ju(y,p[1]);}return x.angley.angle; }Third 开始处理以单调栈维护答案 st[top]p[1];for(int i2;in;i){while(top2jiao(st[top]-st[top-1],p[i]-st[top])0){top--;}st[top]p[i];}st[top1]p[1];完整代码 这个代码是P2742的凸包模版题 请勿 Ctrl-ACtrl-CCtrl-V 丝滑小连招请自己了解后手打一遍 #includebits/stdc.h using namespace std; struct node{double x,y;double angle;node operator-(const node p)const{return{x-p.x,y-p.y,0};} }p[100001]; int n; int s1[10001]; double ju(node x,node y){//求距离 return sqrt((x.y-y.y)*(x.y-y.y)(y.x-x.x)*(y.x-x.x)); } bool cmp(node x,node y){//角排序 if(x.angley.angle){return ju(x,p[1])ju(y,p[1]);}return x.angley.angle; } double jiao(node x,node y){//叉积 return x.x*y.y-x.y*y.x; } node st[100001]; int top; int main(){cinn;int k,xx,yy;for(int i1;in;i){cinp[i].yp[i].x;if(i1){ki;xxp[i].x;yyp[i].y;}if(p[i].xxx||(p[i].xxxp[i].yyy)){ki;xxp[i].x;yyp[i].y;}}swap(p[k],p[1]);for(int i1;in;i){p[i].angleatan2(p[i].x-p[1].x,p[i].y-p[1].y);}sort(p2,pn1,cmp);st[top]p[1];for(int i2;in;i){while(top2jiao(st[top]-st[top-1],p[i]-st[top])0){top--;}st[top]p[i];}st[top1]p[1];double ans0;for(int i1;itop;i){ansju(st[i],st[i1]); // coutst[i].x st[i].yendl;}printf(%.2lf,ans); }例题P3829 题意给你一堆给出的卡片求其凸包周长凸包长度包含圆弧长度 分析第三个样例 其中的黑色凸包与答案红色部分的长度完全相同在根据我们小学8年级的知识多变形的外角和为360度所以外面的圆弧刚好就是一个圆答案就等于凸包一个圆的长度。 代码我不贴了 预告 可能会出Andrew的笔记那时会用Andrew写一遍P3829
http://www.w-s-a.com/news/989267/

相关文章:

  • 中山企业做网站昆明做网站价格
  • wordpress 新网站 代码网站可以做系统还原吗
  • 百度给做网站公司餐饮设计装饰公司
  • 专门卖医疗器械的网站网站建设方案一份
  • 吉林省建设安全监督站网站wordpress 4.7.5下载
  • 网页制作视频的网站建设营销策划公司
  • 玉雕网站建设八点品牌设计公司招聘
  • 服务器可以自己的网站吗flash 网站 源码
  • 湖南做网站 搜搜磐石网络网站注册收入
  • 北京软件网站开发装修设计培训机构
  • 哪个网站能帮助做路书网站建设的技巧
  • 上海网站备案在哪里在国外怎么做网站
  • 做网站得花多钱乡村振兴网站建设
  • 站设计培训课程wordpress自动回复
  • 上海闵行区 网站建设永久免费crm软件下载
  • 天津营销网站建设公司排名台州网站排名公司
  • 环保网站 怎么做物流网站的功能与特色
  • 网站多久才会被收录服务器租用泰海
  • 电商网站建设合同模板临汾推广型网站建设
  • 天猫商务网站建设目的长春网站设计
  • 公司网站建设会议纪要昆山高端网站建设机构
  • 做消费网站流程深圳网站设计价格
  • 做电影网站怎么接广告中国最新军事新闻视频
  • 网站推广设计做哪些设置自动删除的wordpress
  • 东莞东坑网站设计专业网站制作设
  • 网站怎么做现场直播视频成都科技网站建设找
  • 个人网页设计步骤网站没有内容 能做优化吗
  • 专业网站建设公司招聘网站排行榜
  • 网站建设规范方法企业解决方案架构
  • ae做网站导航wordpress门户