Monotone Chain Convex Hull(单调链凸包)算法伪代码:
//输入:一个在平面上的点集P
//点集 P 按 先x后y 的递增排序
//m 表示共a[i=0...m]个点,ans为要求的点;
struct P
{
int x,y;
friend int operator < (P a, P b)
{
if((a.x<b.x) || (a.x==b.x && a.y<b.y))
return ;
return ;
}
}a[m+],ans[m+];
//判断第三点在这个直线的左侧还是右侧
//当judge(), 的返回值小于等于0,说明在右侧,我们一直要找在直线右侧的点
double judge(P a, P b,P c)
{
return (b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y);
}
//构建下凸包,从左跑到右,由下面通过
int k1=;
for(int i=; i<m; i++)//下凸包
{
while(k1> && judge(ans[k1-],ans[k1-],a[i])<=)
{
k1--;
}
ans[k1++]=a[i];
}
// 构建上凸包,从右到左,由上面通过
int k2=k1;
for(int i=m-; i>=; i--)//上凸包
{
while(k1>k2 && judge(ans[k1-],ans[k1-],a[i])<=)
{
k1--;
}
ans[k1++]=a[i];
}
k1--;//减去起点,因为起点进去了两次;

凸包题目:nyoj 78 圈水池 poj 1113 wall

最新文章

  1. 作为前端er,写在年末的一些话
  2. Oracle之分页查询
  3. C# 使用IEnumerable,yield 返回结果,同时使用foreach时,在循环内修改变量的值无效(二)
  4. Fragment中添加ListView而不使用ListFragment
  5. 带中文的路径导致NSURL初始化一直为null的问题
  6. http://localhost/certsrv 错误找不到页面解决方法
  7. maven入门教程
  8. Emmet使用手册
  9. sharepoint 中用自带的download.aspx实现文件的下载,中文文件名编码的问题
  10. VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
  11. 关于char与varchar,varchar2的区别
  12. CSS自学笔记(11):CSS3背景和边框
  13. libc++abi.dylib handler threw exception
  14. Yii CDBCriteria常用方法
  15. nginx及php版本号隐藏
  16. 简聊iOS支付集成(支付宝和微信支付)
  17. JavaSe:Comparator
  18. 面试常考---html篇
  19. svn .a文件上传不了
  20. .34-浅析webpack源码之事件流make(3)

热门文章

  1. 用LaTeX写线性规划
  2. HTML 标签的 enctype 属性
  3. third-maximum-number
  4. Shell学习:read的选项及用法
  5. http://www.cnblogs.com/zhengyun_ustc/p/55solution2.html
  6. Java中文语言处理HanLP
  7. 【笔记】git 的常用操作命令(持续更新。。。)
  8. 我的PHPMailer_v5.1 使用
  9. vue - webpack.base.conf.js
  10. 《暗黑世界V1.3》数据库表说明文档