Texas Trip

Problem's Link:   http://poj.org/problem?id=3301


Mean:

给定n(n <= 30)个点,求出包含这些点的面积最小的正方形的面积。

analyse:

首先要确定的是旋转的角度在0到180度之间即可,超过180度是和前面的相同的。

坐标轴旋转后,坐标变换为:

  1. X = x * cosa - y * sina;
  2. y = y * cosa + x * sina;

Time complexity: O(n)

Source code: 

  1. // Memory Time
  2. // 1347K 0MS
  3. // by : crazyacking
  4. // 2015-03-31-22.18
  5. #include<map>
  6. #include<queue>
  7. #include<stack>
  8. #include<cmath>
  9. #include<cstdio>
  10. #include<vector>
  11. #include<string>
  12. #include<cstdlib>
  13. #include<cstring>
  14. #include<climits>
  15. #include<iostream>
  16. #include<algorithm>
  17. #define MAXN 1000010
  18. #define LL long long
  19. using namespace std;
  20. #define eps 1e-12
  21. #define INF (1<<25)
  22.  
  23. double ppx[],ppy[];
  24. int n;
  25.  
  26. double Cal(double a)
  27. {
  28. double xMin=INF*1.0,yMin=INF*1.0,xMax=-INF*1.0,yMax=-INF*1.0;
  29.  
  30. for(int i=;i<=n;i++)
  31. {
  32. double x1=ppx[i]*cos(a)-ppy[i]*sin(a);
  33. double y1=ppx[i]*sin(a)+ppy[i]*cos(a);
  34.  
  35. if(x1>xMax)
  36. xMax=x1;
  37. if(x1<xMin)
  38. xMin=x1;
  39.  
  40. if(y1>yMax)
  41. yMax=y1;
  42. if(y1<yMin)
  43. yMin=y1;
  44. }
  45. if(xMax-xMin<yMax-yMin)
  46. return yMax-yMin;
  47. else
  48. return xMax-xMin;
  49.  
  50. }
  51.  
  52. int main()
  53. {
  54. int t;
  55. int x,y;
  56.  
  57. scanf("%d",&t);
  58. while(t--)
  59. {
  60. scanf("%d",&n);
  61. for(int i=;i<=n;i++)
  62. {
  63. scanf("%d%d",&x,&y);
  64. ppx[i]=x+500.0;
  65. ppy[i]=y+500.0;
  66. }
  67. double le=,ri=PI,mid,mmid;
  68. double mid_va,mmid_va;
  69.  
  70. while(le+eps<=ri)
  71. {
  72. mid=(le+ri)/;
  73. mmid=(mid+ri)/;
  74. mid_va=Cal(mid);
  75. mmid_va=Cal(mmid);
  76. if(mid_va<mmid_va)
  77. ri=mmid;
  78. else
  79. le=mid;
  80. }
  81. printf("%.2lf\n",Cal(le)*Cal(le));
  82. }
  83. return ;
  84. }

三分 --- POJ 3301 Texas Trip的更多相关文章

  1. POJ 3301 Texas Trip (三分)

    题目链接 题意 : 给你若干个点,让你找最小的正方形覆盖这所有的点.输出面积. 思路 : 三分枚举正方形两对边的距离,然后求出最大,本题用的是旋转正方形,也可以用旋转点,即点的相对位置不变. 正方形从 ...

  2. poj 3301 Texas Trip(几何+三分)

    Description After a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in ...

  3. poj 3301 Texas Trip 三分法

    思路:三分法求解凸函数的极值,三分法介绍在这:http://hi.baidu.com/czyuan_acm/item/81b21d1910ea729c99ce33db 很容易就可以推出旋转后的坐标: ...

  4. POJ 3301 Texas Trip

    题目大意: 在二维坐标系中给出一些点.求能覆盖他们的最小正方形的面积(正方形的边不一定平行坐标轴) 解题思路: 对于一个点.若坐标轴旋转a度(弧度制).那么X'=X*cos(a)-Y*sin(a);Y ...

  5. POJ 3301:Texas Trip(计算几何+三分)

    http://poj.org/problem?id=3301 题意:在二维平面上有n个点,每个点有一个坐标,问需要的正方形最小面积是多少可以覆盖所有的点. 思路:从第二个样例可以看出,将正方形旋转45 ...

  6. poj3301 Texas Trip【三分算法】

    题目地址:http://poj.org/problem?id=3301 简述:T组测试数据,每组线输入n,代表有n个点,接下来输入这n个点的坐标,坐标都是整数. 要求用一个最小的正方形覆盖所有的点,输 ...

  7. POJ 3301 三分(最小覆盖正方形)

    题意:      给你n个点,让你找一个最小的正方形去覆盖所有点.思路:       想一下,如果题目中规定正方形必须和x轴平行,那么我们是不是直接找到最大的x差和最大的y差取最大就行了,但是这个题目 ...

  8. POJ3301 Texas Trip 计算几何、随机化贪心

    传送门--Vjudge 三分写法似乎有问题,可以去Udebug上看Morass的\(666\)个测试点的数据,我的乱搞有很多比正解答案小,但还是能在SPOJ和POJ过,可见数据之水. 可以对正方形的角 ...

  9. 三分 POJ 2420 A Star not a Tree?

    题目传送门 /* 题意:求费马点 三分:对x轴和y轴求极值,使到每个点的距离和最小 */ #include <cstdio> #include <algorithm> #inc ...

随机推荐

  1. go2shell的安装与修改默认terminal方法

    go2shell的安装与修改默认terminal方法   1. 安装go2shell后,打开finder的application文件夹,找到go2shell 2. 按住command,用鼠标将go2s ...

  2. 自己写的一个Yeoman的Generator-Require-Angularjs

    Yeoman是一个常见的工作流,能够很方面的搭建属于自己的脚手架. 这段时间我用闲暇时间写了一个Generator来玩了一下,这个Generator的主要目的是快速建立一个RequireJS+Angu ...

  3. 使用ueditor小结

    1. 导入 js: ueditor.config.js ueditor.all.js css/images/plugin: themes lang dialog(可选) third-party(可选) ...

  4. Python: 无参数的函数装饰器

    写带参数的函数装饰器最纠结的是需要包好多层,最外层是接收参数的函数,它返回一个接收函数的的函数.但这样有个问题是,最终包装出来的装饰器必须加()调用一下,即使没有参数也需要这样做,因为调用这个最外层函 ...

  5. 【转】如何判断Javascript对象是否存在

    Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言描述的算法如下: ...

  6. 上海华魏光纤传感科技有限公司 招聘 《.NET研发工程师》

    代友招聘 <.NET研发工程师> **** 公司简介 **** 上海华魏光纤传感技术有限公司成立于2001年,注册资金1458.16万人民币,专业从事光纤传感技术的研究开发,为交通.市政等 ...

  7. mysql隔离级别

    MySQL/InnoDB定义的4种隔离级别: Read Uncommited 可以读取未提交记录. Read Committed (RC) 针对当前读,RC隔离级别保证对读取到的记录加锁 (记录锁), ...

  8. XCode使用自带SVN,SVN命令

    转载http://blog.sina.com.cn/s/blog_68661bd80101phpy.html 这两天响应老板要求,把所有代码放到公司的SVN服务器上,按照我的想法肯定是就苹果组建一个服 ...

  9. python 二进制读写文件

    #-*- coding: utf-8 -*- f = open('f:/text.bmp','rb') filedata = f.read() filesize = f.tell() f.close( ...

  10. saiku执行速度慢

    使用saiku的过程中发现一个重要问题,速度慢!下面是跟踪和优化过程 一.首先抓包,发现ajax请求:http://l-tdata2.tkt.cn6.qunar.com:8080/saiku/rest ...