博客
关于我
凸包模板
阅读量:326 次
发布时间:2019-03-03

本文共 1202 字,大约阅读时间需要 4 分钟。

题意

在一个平面坐标系上有n个点,用笔画一个多边形,使得多边形包含这n个点(点在多边形的边上也算包含)。

题解

凸包模板啦。。

感觉先弄了半平面交再弄这个有点怪。。
那是因为这个之前就会了。。
现在只是来存放一下模板而已
教程大概就是先随便找一个一定在凸包上的点,我找的是最左下的一个,然后以他为基准,按逆时针或者顺时针排序(我喜欢为逆时针)
然后判断一下这个新点和栈的第二个元素连起来是不是完美包含第一个元素,是的话就把第一个元素踢掉
容易知道这样是 O(n) O ( n )
CODE:

#include
#include
#include
#include
#include
using namespace std;const int N=1005;const double eps=1e-8;int n;struct pnt{ double x,y;}s[N];double mul (pnt x,pnt y,pnt z){ double x1=x.x-z.x,y1=x.y-z.y; double x2=y.x-z.x,y2=y.y-z.y; return x1*y2-x2*y1;}double dis (pnt x,pnt y){ return sqrt((y.x-x.x)*(y.x-x.x)+(y.y-x.y)*(y.y-x.y));}bool cmp (pnt x,pnt y){ if (abs(mul(x,y,s[1]))
eps;}int sta[N],top;int main(){ scanf("%d",&n); for (int u=1;u<=n;u++) scanf("%lf%lf",&s[u].x,&s[u].y); for (int u=2;u<=n;u++) { if (s[1].y-s[u].y>eps) swap(s[1],s[u]); else if (abs(s[1].y-s[u].y)
eps) swap(s[1],s[u]); } sort(s+2,s+1+n,cmp); sta[1]=1;sta[2]=2;top=2; for (int u=3;u<=n;u++) { while (top>2&&mul(s[u],s[sta[top]],s[sta[top-1]])>eps) top--; sta[++top]=u; } double ans=0; sta[++top]=sta[1]; for (int u=2;u<=top;u++) ans=ans+dis(s[sta[u]],s[sta[u-1]]); printf("%.4lf\n",ans); return 0;}

转载地址:http://vxcq.baihongyu.com/

你可能感兴趣的文章
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>