1. /*
  2. 唐代李白
  3. 《江夏别宋之悌》
  4. 楚水清若空,遥将碧海通。人分千里外,兴在一杯中。
  5. 谷鸟吟晴日,江猿啸晚风。平生不下泪,于此泣无穷.
  6. */
  7. #include <iostream>
  8. #include <cstdio>
  9. #include <algorithm>
  10. #include <cstring>
  11. #include <vector>
  12. #include <utility>
  13. #include <iomanip>
  14. #include <string>
  15. #include <cmath>
  16. #include <queue>
  17. #include <assert.h>
  18. #include <map>
  19. #include <ctime>
  20. #include <cstdlib>
  21. #include <stack>
  22. #include <set>
  23. #define LOCAL
  24. const int INF = 0x7fffffff;
  25. const int MAXN = + ;
  26. const int maxnode = * + * ;
  27. const int MAXM = + ;
  28. const int MAX = ;
  29. using namespace std;
  30. struct point{//也是vector
  31. int x, y;
  32. }p[MAXN], stack[MAXN];
  33. int top;
  34. int dis(point p1,point p2){return (p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);}
  35. //叉积,结果小于表示向量p0p1的极角大于p0p2的极角,等于则0两向量共线
  36. int multi(point p1, point p2, point p0){//p0为坐标
  37. return (p1.x - p0.x) * (p2.y - p0.y) - (p2.x - p0.x) * (p1.y - p0.y);
  38. }
  39.  
  40. int cmp(point a,point b){
  41. if(multi(a,b,p[]) > ) return ;
  42. if(multi(a,b,p[]) == && dis(a,p[]) < dis(b,p[])) return ;
  43. return ;
  44. }
  45. //Graham_scan凸包扫描
  46. void Graham_scan(point p[],point stack[],int n){
  47. int i, j, k = ;
  48. top=;
  49. point temp;
  50.  
  51. for(i=;i<n;i++) if(p[i].y<p[k].y||((p[i].y==p[k].y)&&(p[i].x<p[k].x))) k=i;
  52. swap(p[], p[k]);
  53. //按极角从小到大,距离偏短进行排序
  54. sort(p + , p + n, cmp);
  55. stack[] = p[];
  56. stack[] = p[];
  57. stack[] = p[];
  58. for (int i = ; i < n; i++){
  59. while(top > && multi(p[i],stack[top],stack[top-]) >= )
  60. top--;
  61. stack[++top] = p[i];
  62. }
  63. }
  64.  
  65. int main(){
  66. #ifdef LOCAL
  67. freopen("data.txt", "r", stdin);
  68. freopen("out.txt", "w", stdout);
  69. #endif
  70. //printf("%d", (a == c));
  71. return ;
  72. }

【模板】【凸包】Graham_scan的更多相关文章

  1. POJ 3348 Cows (凸包模板+凸包面积)

    Description Your friend to the south is interested in building fences and turning plowshares into sw ...

  2. 【计算几何】二维凸包——Graham's Scan法

    凸包 点集Q的凸包(convex hull)是指一个最小凸多边形,满足Q中的点或者在多边形边上或者在其内.右图中由红色线段表示的多边形就是点集Q={p0,p1,...p12}的凸包. 一组平面上的点, ...

  3. poj1584 A round peg in a ground hole【计算几何】

    含[判断凸包],[判断点在多边形内],[判断圆在多边形内]模板  凸包:即凸多边形 用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边形,它能包含点集中所有的点. The ...

  4. POJ 1873 - The Fortified Forest 凸包 + 搜索 模板

    通过这道题发现了原来写凸包的一些不注意之处和一些错误..有些错误很要命.. 这题 N = 15 1 << 15 = 32768 直接枚举完全可行 卡在异常情况判断上很久,只有 顶点数 &g ...

  5. 凸包模板 POJ1873

    // 凸包模板 POJ1873 // n=15所以可以按位枚举求凸包,再记录数据 #include <iostream> #include <cstdio> #include ...

  6. 计算几何(凸包模板):HDU 1392 Surround the Trees

    There are a lot of trees in an area. A peasant wants to buy a rope to surround all these trees. So a ...

  7. hdu 2202 最大三角形_凸包模板

    题意:略 思路:直接套用凸包模板 #include <iostream> #include <cstdio> #include <cmath> #include & ...

  8. LG2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows

    题意 题目描述 农夫约翰想要建造一个围栏用来围住他的奶牛,可是他资金匮乏.他建造的围栏必须包括他的奶牛喜欢吃草的所有地点.对于给出的这些地点的坐标,计算最短的能够围住这些点的围栏的长度. 输入输出格式 ...

  9. HDU 1392 Surround the Trees(几何 凸包模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1392 题目大意: 二维平面给定n个点,用一条最短的绳子将所有的点都围在里面,求绳子的长度. 解题思路: 凸包的模 ...

随机推荐

  1. (转载)在vmware中简单配置vsftpd服务器

    (转载)http://blog.chinaunix.net/uid-7453676-id-2625582.html 分类: LINUX 一 试验的前期环境搭建   系统环境:Fedora 2   软件 ...

  2. 贪心(哈夫曼树):HDU 5884 sort

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2QAAAKACAIAAAB8KCy/AAAgAElEQVR4nOy9a5Adx3UmWL+kHxuekU ...

  3. canvas——画板

    注意部分: canvas的height和width不能再css中设定,应该在html中设定,否则会影响页面的分辨率. 效果图: 图1: 代码 css: #canvas{ cursor: crossha ...

  4. web.xml中的contextConfigLocation的作用

    在web.xml中通过contextConfigLocation配置spring,contextConfigLocation 参数定义了要装入的 Spring 配置文件. 如果想装入多个配置文件,可以 ...

  5. 实现DataGridView实时更新数据

    ;).ToString() + ).ToString() + "秒";        } }}

  6. HDOJ(HDU) 2523 SORT AGAIN(推导排序、、)

    Problem Description 给你N个整数,x1,x2-xn,任取两个整数组合得到|xi-xj|,(0 < i,j<=N,i!=j). 现在请你计算第K大的组合数是哪个(一个组合 ...

  7. MVC5 学习整理

    一.概述 MVC简介: •       模型(Model) “数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法.“模型”有对数据直接访问的权力,例如对数据库的访问.“ ...

  8. Add external tool in the Android Studio

    Add external tool in the Android Studio */--> pre { background-color: #2f4f4f;line-height: 1.6; F ...

  9. Axure初体验:简单交互、通过按钮切换图片

    前言: 之前是一直用processon的UI原型设计,后来感觉只能完成静态页面的processon满足不了原型设计的需求,断网时候也不方便修改.展示.最终还是决定学习动态页面的制作,所选工具为原型设计 ...

  10. 通过代码来执行testng.xml

    大多数时候,我们都是通过Eclipse IDE上的操作命令来执行testng 框架下的case 运行.那如果我们不想通过这种方式,而是想通过代码调用来实现执行该怎么办?下面是我搜集的两种方式供大家参考 ...