凸包模板
来源:互联网 发布:php 编写服务器端 编辑:程序博客网 时间:2024/06/05 03:06
struct Node{ int x,y; Node(int _x = 0,int _y = 0):x(_x),y(_y){} bool operator < (const Node& b)const{ return x == b.x ? y < b.y : x < b.x; } Node operator - (Node b){ return Node(x - b.x,y - b.y); } Node operator + (Node b){ return Node(x + b.x,y + b.y); }}node[maxn],sta[maxn];int N;int n;void add(int x,int y){ node[n].x = x,node[n].y = y;n++;}//Cross为两向量的叉乘double Cross(const Node & a,const Node & b){ return a.x * b.y - a.y * b.x;}//计算凸包,其中node数组是原图形点的数组,n为点数,sta为输出数组,其中m为输出数组元素个数//输入不能有重复点,凸包函数执行完后输入点数序破坏//所求凸包的边上无点,则Cross函数后为<= ,若要有点则为 <//精度较高时用dcmp比较//其中排序按照优先x从小到大,其次y从小到大排int get_tubao(){ sort(node,node + n); int m = 0; for(int i = 0;i < n;i++){ while(m > 1 && Cross(sta[m - 1] - sta[m - 2],node[i] - sta[m - 2]) <= 0)m--; sta[m++] = node[i]; } int k = m; for(int i = n - 2;i >= 0;i--){ while(m > k && Cross(sta[m - 1] - sta[m - 2],node[i] - sta[m - 2]) <= 0)m--; sta[m++] = node[i]; } if(n > 1)m--; return m;}
0 0
- 凸包模板
- 1392 凸包模板
- 凸包模板
- 凸包模板题
- 更新凸包模板
- 三维凸包模板
- 凸包模板
- 三维凸包模板
- 凸包模板
- 凸包模板
- 三维凸包模板
- 三维凸包模板
- 凸包模板
- 凸包 andrew模板
- 凸包面积模板
- 模板,凸包
- 凸包模板
- 凸包模板!
- Ubuntu15 in Virtualbox 无法全屏
- tableView的网络数据获取
- 每天一个小知识点2(sass总结)
- 腾讯SNG 7月25日——开发类专场招聘会
- ubuntu64位adt bound创建项目找不到R文件
- 凸包模板
- Java程序的编码规范
- brackets前端开发工具添加html自动格式format插件
- JAVA学习(一)安装和测试
- 黑马程序员——我的学习感悟....
- 解决 msysgit 无法启动该程序,因为计算机中丢失libiconv-2.dll
- 小菜编程成长记(十二 无熟人难办事?——聊设计模式迪米特法则)
- 相比Redis,Memcached真的过时了吗?
- Linux下批量杀掉 包含某个关键字的 程序进程