POJ3301最小正方形覆盖(三分)

poj 3301 Texas Trip(旋转+三分) 题目:http://poj.org/problem?id=3301 大意:给出一些点求出最小正方形面积把它们都覆盖掉。 要解决它我们需要会一些基础知识:坐标旋转公式,三分搜索算法。 逆时针旋转:x=xcosθ+ysinθ;  y=ycosθ-xsinθ 顺时针旋转:x=xcosθ-ysinθ;  y=ycosθ+xsinθ 阅读详情

 题意:用最小的正方形覆盖所有的点,输出此正方形的面积。

思路:一条边长与x轴平行的正方形,旋转的角度与投影到x轴的长度的变化关系是一个单峰函数,所以用三分解题,但旋转正方形不方便,所以旋转坐标系。

x=a[i].x*cos(degree)-a[i].y*sin(degree);
y=a[i].x*sin(degree)+a[i].y*cos(degree);

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#define INF 0x3f3f3f3f
#define PI acos(-1.0)
using namespace std;
const double eps =1e-12;
const int maxn = 50;
struct Node{
	int x;
	int y;
}a[maxn];
int n;
double C(double degree){
	double x,y,maxx,maxy,minx,miny;
	maxx = maxy = -INF;
	minx = miny = INF;
	for(int i=0;i<n;i++){
		x=a[i].x*cos(degree)-a[i].y*sin(degree);
		y=a[i].x*sin(degree)+a[i].y*cos(degree);
		maxx=max(maxx,x);
		maxy=max(maxy,y);
		minx=min(minx,x);
		miny=min(miny,y);
	}
	return max(maxx-minx,maxy-miny);
}
double bsearch(){
	double left=0,right=PI/2.0;
	double midl,midr;
	while(right-left>eps){
		midl=(left+right)/2;
		midr=(midl+right)/2;
		if(C(midl)<C(midr)){
			right=midr;
		}
		else{
			left=midl;
		}
	}
	return C(left);
}
int main()
{
	int T;
	cin>>T;
	while(T--){
		cin>>n;
		for(int i=0;i<n;i++){
			cin>>a[i].x>>a[i].y;
		}
		double low = bsearch();
		printf("%.2lf\n",low*low);
	}
	return 0;
}

 

Poj3301 三分法解题报告 题目要求求解覆盖所有离散在二维空间内的点最小正方形的面积, 阅读详情

相关推荐

PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1876

POJ 3301 三分最小覆盖正方形

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

天使也掉毛 1850

【华为OD技术面试真题 - 技术面】- python面试题(1)

华为OD面试技术面准备指南 华为OD面试技术面常见问题解答 华为OD面试技术面经验分享 华为OD面试技术面注意事项 华为OD面试技术面攻略 华为OD面试技术面模拟题目与解析 华为OD面试技术面知识点梳理 华为OD面试技术面常考

算法大师! 5462

POJ 3301 (坐标变换、三分枚举计算 点集最小正方形覆盖

Texas Trip Description After a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in the door of his SUV. The local American Tire store sells fiberglass patching material

Feynman1999的博客 1455

POJ 3301三分

大意:给N个点,用最小面积的正方形覆盖三分坐标轴旋转角度,然后在N个点中找最大边长。 坐标偏转后的点的变化公式可用极坐标方程证明。#include #include #include #define maxl 301 #define eps 1e-8 #define inf 2000000001 using namespace std; int n,t; const double pi

binarycopycode 282

poj3301三分-坐标旋转)

题意:给出最多30个点的坐标,求覆盖所有点的最小正方形面积。 解法:没有证明正确性,网上对于此法的正确性有争议。反正是用三分过的,也许数据弱了。就是在0-90度的旋转范围内三分角度(所有点旋转的角度)。正方形的边总是平行于坐标轴的,那么每次正方形的边长总是最大x坐标之差和最大y坐标之差中更大那个。       点旋转A后的坐标公式                          

xiefubao的专栏 987

POJ 3301 三分

&#13; 链接:&#13; http://poj.org/problem?id=3301&#13; 题意:&#13; 给定二维平面的n个点,要求一个面积最小正方形,使其能覆盖所有的点。&#13; 题解:&#13; 我们可以让正方形不要动,所有点进行旋转变换,这样结果是不会变的。 &#13; 变形即: x1=x*cos(a)-y*sin(a); y1=x*sin(a)+y*...

花海 196

poj3301Texas Trip【平面正方形最小覆盖三分法】

Language: Default Texas Trip Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4709   Accepted: 1473 Description After a day trip with his friend Dick, Har

走一步再走一步 1246

[POJ3301]Texas Trip(三分-最小正方形覆盖

题目: 我是超链接 题解: 设正方形的边都与坐标轴平行可以求出来一个正方形 如果这个正方形旋转一个角度的话正方形的大小可能会改变 经过我多年文化课做几何旋转题目,可以发现正方形的面积关于旋转角度的函数单峰 如果面积随角度变化是单峰的函数,那么自然就可以想到是三分,按照题目要求求正方形最小的面积,如果正方形是平行于x轴的,那么正方形面积是x的最大距离*y的最大的距离。然后旋转正方...

薇小薇 509

POJ 3301 Texas Trip(最小正方形覆盖+三分

传送门 After a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in the door of his SUV. The local American Tire store sells fiberglass patching material only in square sheets.

代码改变世界 1350

三分 + 几何】Texas Trip POJ - 3301 (将所有点框在一个矩形中,使面积最小

三分始终舍弃离极值点远的那一边 midl = (l + r) / 2或者 midl = (r - l) / 3 + l midr = (midl + r) / 2或者 midr = r - (r - l) / 3 【二分 + 几何】Texas Trip POJ - 3301 (将所有点框在一个矩形中,使面积最小) After a day trip with his friend Dick...

Floraqiu的博客 1624

poj3301 Texas Trip【三分算法】

题目地址:http://poj.org/problem?id=3301 简述:T组测试数据,每组线输入n,代表有n个点,接下来输入这n个点的坐标,坐标都是整数。 要求用一个最小正方形覆盖所有的点,输出它的面积,精确到小数点后两位。 算法思路:枚举角度,计算面积,三分枚举 (可参考:程序设计 解题策略吴永辉...著 394页) 代码: #include &l...

weixin_30526593的博客 130

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

http://poj.org/problem?id=3301 题意:在二维平面上有n个点,每个点有一个坐标,问需要的正方形最小面积是多少可以覆盖所有的点。 思路:从第二个样例可以看出,将正方形旋转45°的时候,面积是最小的。 因此考虑旋转正方形,就可以当作旋转本来的点,对于旋转后的点,求最大的x和最小的x,最大的y和最小的y,就可以求得覆盖旋转后的点的正方形面积了。 然后对于每一个角度,都...

weixin_30727835的博客 160

POJ 3301 Texas Trip (三分

POJ 3301 Texas Trip (三分) ACM 题目地址:  POJ 3301 Texas Trip 题意:  给定二维平面的n个点,要求一个面积最小正方形,使其能覆盖全部的点。 分析:  去求凸包你就输了...  我们能够让正方形不要动。全部点进行旋转变换。这样结果是不会变形的。  变形即: x1=x*cos(a)-y*sin(a); y...

weixin_33709590的博客 183

Texas Trip

Texas Trip   Poj 3301:Texas Trip 题意:平面坐标上有一些点(最多30个),求用最小面积的正方形,把它们覆盖完 题解:找到最远的两个点作为边长是不对的,因为正方形可以斜着放。正解是假设正方形的边与坐标轴平行,三分旋转的角度找到峰值。难点在于旋转坐标轴后点的新坐标。     可以说这道题开始完全没想到,直到刚看到题解时还有点懵O__O"…看懂之

LSY_LELOUCH_YUKI的博客 453

poj_3301_三分_凹函数_求能覆盖N个点的最小正方形_对坐标系旋转_求新坐标

Texas TripAfter a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in the door of his SUV. The local American Tire store sells fiberglass patching material only in square sh

NITjianbagengmu的博客 464

POJ - 3301)Texas Trip

POJ - 3301)Texas Trip After a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in the door of his SUV. The local American Tire store sells fiberglass patching material only in squar

The wind of freedom blows 398

poj3301 Texas Trip(坐标旋转+三分

Texas Trip http://poj.org/problem?id=3301 Time Limit:1000MS Memory Limit:65536K Total Submissions:4709 Accepted:1473 Description After a day trip with his f...

weixin_33734785的博客 103

win7/win8/win10安装4.8-3.5的.Net framework3.5安装失败问题,亲测已解决

win7/win8/win10安装4.8-3.5的.Net framework3.5安装失败问题,亲测已解决

上一篇: CSU1976(小明搬宿舍)解题报告
下一篇: hdu2899(三分)函数最小值
一条菜狗
博客等级 码龄9年 92粉丝 129原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值