题意:
      给你n个点,让你找一个最小的正方形去覆盖所有点。
思路:

      想一下,如果题目中规定正方形必须和x轴平行,那么我们是不是直接找到最大的x差和最大的y差取最大就行了,但是这个题目没说平行,那么我们就旋转这个正方形,因为是凸性(或者凹性)用三分去枚举正方形的角度[0,PI/2],然后缩小范围,知道找到答案。公式是

nowx = x * cos(du) - y * sin(d)    nowy = x * sin(du)  + y *cos(d)


#include<stdio.h>
#include<math.h>#define N 50
#define eps 0.000001double PI = acos(-1.0);typedef struct
{double x ,y;
}NODE;NODE node[N];double maxx(double x ,double y)
{return x > y ? x : y;
}double minn(double x ,double y)
{return x < y ? x : y;
}double abss(double x)
{return x < 0 ? -x : x;
}double now(double phi ,int n)
{double Max_x = -100000000 ,Min_x = 100000000;double Max_y = -100000000 ,Min_y = 100000000;for(int i = 1 ;i <= n ;i ++){double xx = node[i].x * cos(phi) - node[i].y * sin(phi);double yy = node[i].x * sin(phi) + node[i].y * cos(phi);Max_x = maxx(xx ,Max_x);Max_y = maxx(yy ,Max_y);Min_x = minn(Min_x ,xx);Min_y = minn(Min_y ,yy);}return maxx((Max_x - Min_x) ,(Max_y - Min_y));
}int main ()
{int t ,n ,i;double low ,mid ,mmid ,up ,ans;scanf("%d" ,&t);while(t--){scanf("%d" ,&n);for(i = 1 ;i <= n ;i ++)scanf("%lf %lf" ,&node[i].x ,&node[i].y);low = 0 ,up = PI / 2.0;while(1){mid = (low + up) / 2.0;mmid = (mid + up) / 2.0;double dis1 = now(mid ,n);double dis2 = now(mmid ,n);if(dis1 < dis2) up = mmid;else  low = mid;if(abss(dis1 - dis2) < eps)break;ans = minn(dis1 ,dis2);}printf("%.2lf\n" ,ans * ans);}return 0;
}

POJ 3301 三分(最小覆盖正方形)相关推荐

  1. POJ - 2002 Squares 数正方形【二分】【哈希表】

    Squares POJ - 2002 题意 平面上有N个点,任取4个点,求能组成正方形的不同组合方式有多少种:相同的四个点,不同顺序构成的正方形视为同一正方形 分析 做法1 先枚举两个点,通过计算得到 ...

  2. POJ 2226 二分图最小覆盖

    题意: 思路: 把横着的连通块放在一个集合 竖着的放在一个集合 如果有交 就连边 求最小覆盖即可 (数值上等于最大匹配) //By SiriusRen #include <cstdio> ...

  3. POJ 计算几何入门题目推荐

      其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途(例如本人的专 ...

  4. poj计算几何题推荐

    POJ 计算几何入门题目推荐(转)       其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的 ...

  5. POJ 计算几何入门题目推荐(转)

    POJ 计算几何入门题目推荐(转)       其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的 ...

  6. 【专题】三分法和牛顿迭代法总结

    下面总结两种迭代方法:三分法和牛顿迭代 1.三分法 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值.但当函数是凸性函数时,二分法就无法适用,这时三分法就可以大显身手. 如下凸函数: 类 ...

  7. 技巧专题1(二分、三分、位运算)

    二分 二分答案一般有以下的一些特征: A. 候选答案在区间[min,max]上按照某种属性有序,一般枚举复杂度较高. B. 容易判断某个点是否为可行 最大值最小. 判断一个东西是否在一个有序集合中出现 ...

  8. ACM计算几何题目推荐

    //第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...

  9. 计算几何相关资料+题目推荐(不定期补充)

    旋转卡壳:http://blog.csdn.net/accry/article/details/6070626 计算几何题目推荐:http://blog.csdn.net/accry/article/ ...

最新文章

  1. mysql 多线程_数据库选型之MySQL(多线程并发)
  2. COM:下一代微生物组技术在作物生产中的应用——局限性以及基于知识的解决方案的需求
  3. Servlet、Filter、Listener、Interceptor基础
  4. Unity3d之AssetBundle打包与读取
  5. 代码的坏味道:控制结构嵌套太深
  6. 【SpringCloud】Spring cloud Alibaba seata 分布式事务
  7. 我是一个尝试做自媒体的程序员
  8. 计算机软件著作权登记怎么填写,计算机软件著作权登记申请表填写说明
  9. python抓取图片数字_Python OCR提取普通数字图形验证中的数字
  10. PMP学习笔记之四 第三章 单个项目管理过程
  11. (美)梅耶(Myers, G. J.) 等《软件测试的艺术(原书第3版)》书籍(第3版)
  12. javaWeb框架开发
  13. SpringCloud项目 CICD 部署
  14. 识别中文_关于开展中文语音识别和语音合成基础服务可信评估的通知
  15. android移动应用开发答案,Android移动应用开发习题答案.pdf
  16. 怎样给图片降噪?这几个图片降噪软件可以帮助你
  17. Python 强化学习实用指南:1~5
  18. ‘DatePicker.RangePicker‘ cannot be used as a JSX component.
  19. Idea导包正确还是显示标红(错误)
  20. DATEDIFF 函数的使用

热门文章

  1. mysql保留2位小数字段如何设置 浮点数
  2. enum类型被intent所携带时需要注意的地方
  3. 为iframe添加鼠标事件
  4. 比较经典的三层交换机实验
  5. 【基础算法-模拟-例题-*校长的问题】-C++
  6. SQL Server移除事务日志后sys.master_files依然存在记录问题
  7. oracle数据库数据导入导出步骤(入门)
  8. 将oracle冷备份恢复到另外一个数据库实例中
  9. synchronized同步对象锁
  10. 评价cnblogs.com的用户体验