用叉积求凸包面积

如图所示,每次找p【0】来计算,(叉积是以两个向量构成的平行四边形的面积,所以要/2)

  1. #include<map>
  2. #include<set>
  3. #include<cmath>
  4. #include<queue>
  5. #include<stack>
  6. #include<vector>
  7. #include<cstdio>
  8. #include<cassert>
  9. #include<iomanip>
  10. #include<cstdlib>
  11. #include<cstring>
  12. #include<iostream>
  13. #include<algorithm>
  14. #define pi acos(-1.0)
  15. #define ll long long
  16. #define mod 1000000007
  17. #define ls l,m,rt<<1
  18. #define rs m+1,r,rt<<1|1
  19. #pragma comment(linker, "/STACK:1024000000,1024000000")
  20.  
  21. using namespace std;
  22.  
  23. const double g=10.0,eps=1e-;
  24. const int N=+,maxn=+,inf=0x3f3f3f;
  25.  
  26. struct point {
  27. double x,y;
  28. };
  29. point p[N],s[N];
  30. int n;
  31. double dir(point p1,point p2,point p3)
  32. {
  33. return (p3.x-p1.x)*(p2.y-p1.y)-(p3.y-p1.y)*(p2.x-p1.x);
  34. }
  35. double dis(point p1,point p2)
  36. {
  37. return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
  38. }
  39. bool comp(point p1,point p2)
  40. {
  41. double te=dir(p[],p1,p2);
  42. if(te<)return ;
  43. if(te==&&dis(p[],p1)<dis(p[],p2))return ;
  44. return ;
  45. }
  46. double Graham()
  47. {
  48. int pos;
  49. double minx,miny;
  50. minx=miny=inf;
  51. for(int i=;i<n;i++)
  52. {
  53. if(p[i].x<minx||(p[i].x==minx&&p[i].y<miny))
  54. {
  55. minx=p[i].x;
  56. miny=p[i].y;
  57. pos=i;
  58. }
  59. }
  60. swap(p[],p[pos]);
  61. sort(p+,p+n,comp);
  62. int top=;
  63. p[n]=p[];
  64. s[]=p[],s[]=p[],s[]=p[];
  65. for(int i=;i<=n;i++)
  66. {
  67. while(top>=&&dir(s[top-],s[top],p[i])>=)top--;
  68. s[++top]=p[i];
  69. }
  70. double ans=;
  71. for(int i=;i<top-;i++)
  72. ans-=dir(s[],s[i],s[i+]);
  73. return ans/;
  74. }
  75. int main()
  76. {
  77. ios::sync_with_stdio(false);
  78. cin.tie();
  79. while(cin>>n){
  80. for(int i=;i<n;i++)
  81. cin>>p[i].x>>p[i].y;
  82. cout<<(int)Graham()/<<endl;
  83. }
  84. return ;
  85. }

poj3348凸包面积的更多相关文章

  1. poj3348(求凸包面积)

    题目链接:https://vjudge.net/problem/POJ-3348 题意:转换题意后即是求凸包的面积. 思路: 套模板,求凸包面积即转换为多个三角形面积之和,用叉积求,然后除2,因为本题 ...

  2. POJ 3348 - Cows 凸包面积

    求凸包面积.求结果后不用加绝对值,这是BBS()排序决定的. //Ps 熟练了template <class T>之后用起来真心方便= = //POJ 3348 //凸包面积 //1A 2 ...

  3. poj 3348 Cow 凸包面积

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8122   Accepted: 3674 Description ...

  4. poj 3348:Cows(计算几何,求凸包面积)

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6199   Accepted: 2822 Description ...

  5. uva109求凸包面积,判断点是不是在凸包内

    自己想了一个方法判断点是不是在凸包内,先求出凸包面积,在求由点与凸包上每两个点之间的面积(点已经排好序了),如果两者相等,则点在凸包内,否则不在(时间复杂度可能有点高)但是这题能过 #include& ...

  6. poj 3348(凸包面积)

    Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 8063   Accepted: 3651 Description ...

  7. 【UVA10652】Board Wrapping(求凸包面积)

    点此看题面 大致题意: 告诉你若干个矩形的重心坐标.长.宽和相对\(y\)轴的偏转角度,求矩形面积和与能围住这些矩形的最小凸包面积之比. 矩形面积和 这应该是比较好求的吧. 已经给了你长和宽,直接乘起 ...

  8. UESTC 33 Area --凸包面积

    题意: 求一条直线分凸包两边的面积. 解法: 因为题意会说一定穿过,那么不会有直线与某条边重合的情况.我们只要找到一个直线分成的凸包即可,另一个的面积等于总面积减去那个的面积. 怎么得到分成的一个凸包 ...

  9. Codeforces Gym 100286A. Aerodynamics 计算几何 求二维凸包面积

    Problem A. AerodynamicsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/co ...

随机推荐

  1. 20165324《Java程序设计》第七周

    20165324<Java程序设计>第七周 教材学习内容总结 第11章 JDBC与MySOLz数据库 MySQL数据库管理系统,简称MySQL. 使用步骤: 启动MySQL数据库服务 器建 ...

  2. (转)extern关键字两种场景的使用

    第一种场景 -- extern extern关键字的作用是声明变量和函数为外部链接,即该变量或函数名在其它文件中可见.用其声明的变量或函数应该在别的文件或同一文件的其它地方定义. 例如语句:exter ...

  3. 哪个地图API 好用

    之前我们能用的地图软件还寥寥无几,而且一个地图包动辄就上百M,还不支持GPS,没有实时路况,没有卫星图,一年也未必更新一次.现如今的地图功能已经极大丰富了,开发者的项目选择性也很大,地图哪个受众比较多 ...

  4. loadrunner:设置检查点的几种方法

    判断操作是否成功,检查点是必不可少的.loadrunner中可以设置文本检查点和图片检查点,下面记录一下loadrunner设置检查点的几种方法. 前言:在回放脚本时,必须确定run-time set ...

  5. Java HashMap详细介绍和使用示例

    ①对HashMap的整体认识 HashMap是一个散列表,它存储的内容是键值对(key-value)映射. HashMap继承于AbstractMap,实现了Map.Cloneable.java.io ...

  6. redis安全设置

    1. 设置监听ip为本地和内网ip bind 127.0.0.1 192.168.1.99 ## 可以是多个ip,用空格分割 2. 设置监听端口 port 16379 3. 设置密码 在配置文件中加入 ...

  7. [2013-1-29] Air 安卓 天气预报源码

    开源一个air android纯代码天气预报源码,未作优化~ ,仅供学习使用,勿作商用~   花了两天时间,随便写了个天气预报 小应用 .纯代码,没有用组件,所以体积要小点.效率么...主要是没有去优 ...

  8. javascript对象继承

    一.实例化和继承的区别 构造函数.原型和实例的关系:每 个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型 对象的内部指针. 类(Class)和实例(Insta ...

  9. AndroidStudio 使用AIDL

    http://blog.csdn.net/ducklikejava/article/details/51559244 Android Studio中写的一个AIDL的小DEMO. 步骤很繁琐,本来不准 ...

  10. JCenter下载太慢?教你修改Maven仓库地址为国内镜像

    http://blog.csdn.net/biezhihua/article/details/49668605 转载自:http://www.yrom.net/blog/2015/02/07/chan ...