会做这题的有木有?挺有意思的题!过来看看吧,测测水平也好!解决思路
会做这题的有木有???挺有意思的题!过来看看吧,测测水平也好!
如今房价居高不上,大部分人往往需要奋斗一辈子才能买得起一套房子,无数青年为了房子失去了自己的理想,成为了房子的奴隶。
易小川他厌倦了这种现实的生活,他决定隐居森林,他找到一片很大的森林,这片森林很特别,它最外围有四棵非常大的树,刚好构成一个矩形(x1, y1), (x2, y2), (x1,y2), (x2, y1),这个矩形就是森林的边界,除了这四颗大树,森林里面还有n颗树。易小川需要在这片森林里构建属于它自己的世界。
易小川他有着自己房子的蓝图:
1:房子必须是圆形的,易小川对圆形有特殊的爱好。
2:房子的中心(即圆心)必须在森林的边界以内(也就是坐标范围是([x1, x2], [y1,y2])),为了更隐蔽,不被发现。
3:易小川是环保主义者,他不会砍掉任何一颗树。
4:易小川希望找到一片最大的圆形空地,以构建他的房子。
易小川是很牛的计算机科学家,他当然会找到最大的空地,但是你知道吗?
为简化问题,所有的树都当成一个点。
Input
首先1-4行每行两个实数,分别代表矩形4个端点的坐标(x1, y1), (x2, y2), (x1,y2), (x2, y1), 矩形的左下角为x1, y1, 右上角为x2, y2.
第5行输入一个整数n, 代表森林里面还有n颗树
接下来有n行,每行两个实数,代表这颗树的坐标
(0 ≤ n ≤ 96)
所有坐标范围([0.0, 10000.0], [0.0, 10000.0])
Output
输出仅一行。
输出一个实数r,代表最大圆形空地的半径大小。
答案保留2位小数。
Sample Input
0.0 0.0
10.0 5.0
0.0 5.0
10.0 0.0
2
1.0 1.0
4.0 1.0
Sample Output
4.33
------解决方案--------------------
遍历,每两点之间画圆,检查园是否超边界,是否有其他点;如果满足要求,刷新最大半径并记录。
------解决方案--------------------
易小川,哈哈。
金莎 - 星月神话
作词:金莎 作曲:金莎
我的一生最美好的场景
就是遇见你
在人海茫茫中静静凝望着你
陌生又熟悉
啊~啊 啊~啊~啊 啊~啊 啊~啊
尽管呼吸着同一天空的气息
却无法拥抱到你
如果转换了时空身份和姓名
但愿认得你眼睛
千年之后的你会在哪里
身边有怎样风景
我们的故事并不算美丽
却如此难以忘记
Music...
啊~啊 啊~啊~啊 啊~啊 啊~啊
尽管呼吸着同一天空的气息
却无法拥抱到你
如果转换了时空身份和姓名
但愿认得你眼睛
千年之后的你会在哪里
身边有怎样风景
我们的故事并不算美丽
却如此难以忘记
如果当初勇敢的在一起
会不会不同结局
你会不会也有千言万语
埋在沉默的梦里
------解决方案--------------------
想错了,各位高手继续
------解决方案--------------------
3个点才能确定一个圆,因此最大的圆必然会跟3个点相切,如若不然,这个圆必然还是可以扩大的,所以题目中存在的圆必然是经过3个点,因此可以遍历任意3点,然后算出这3个点确定的圆心,然后判断这个圆之内是否还有别的点,如果没有,则是满足条件。找出这种由3个点确定的圆内没有其它点的最大圆即可。
这种算法不是很优化,但幸好题目对树木的个数做了限制,中间最多96棵,加上4个角的4棵,任意3个点的组合最多有C(100,3)=100*99*98/6=161700种。
------解决方案--------------------
二楼好精辟
------解决方案--------------------
支持4楼,需要判断圆心是否在森林内
但是不需要判圆是否超出森林边界
根据题意,圆居然可以出森林边界。。。
------解决方案--------------------
4楼的做法很多没考虑到,1。没考虑到圆心必须在内部,2。最大圆没必要必须过3点,如果只有3个集中在左上,显然过这3点的不是最大的圆。题目还是很复杂的。
想一个最简单的模型,只有3个点就已经很复杂了,任意取2点,然后做垂直平分线,与矩形区域必然有2个交点,分别计算是否包含第3个点,一个最多6个符合条件的,加上过这3点的一个,7个值取半径最大的那个,3点这样算大概问题不大,但是多点大概就不行了
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
wtbike已经说明了你举的例子的问题了,请仔细看我的算法,顶点的4棵树是必须包括在内的
------解决方案--------------------
当n=0,只有矩形4个顶点。满足要求的最大的圆心就是矩形中心,最大半径就是中心到顶点的距离R_MAX。
往矩形中添加点,只会压缩这个圆,所以最大的半径不能超过R_MAX。
100个点,每次取3个点确定圆心坐标,先判断坐标位于矩形内部而且半径不超过R_MAX,满足这2个条件再与其他的点一一计算距离,不满足就不用计算了,直接取下3个点。
这样似乎能优化一点。
------解决方案--------------------
我只会画图,不会说。。。。
如今房价居高不上,大部分人往往需要奋斗一辈子才能买得起一套房子,无数青年为了房子失去了自己的理想,成为了房子的奴隶。
易小川他厌倦了这种现实的生活,他决定隐居森林,他找到一片很大的森林,这片森林很特别,它最外围有四棵非常大的树,刚好构成一个矩形(x1, y1), (x2, y2), (x1,y2), (x2, y1),这个矩形就是森林的边界,除了这四颗大树,森林里面还有n颗树。易小川需要在这片森林里构建属于它自己的世界。
易小川他有着自己房子的蓝图:
1:房子必须是圆形的,易小川对圆形有特殊的爱好。
2:房子的中心(即圆心)必须在森林的边界以内(也就是坐标范围是([x1, x2], [y1,y2])),为了更隐蔽,不被发现。
3:易小川是环保主义者,他不会砍掉任何一颗树。
4:易小川希望找到一片最大的圆形空地,以构建他的房子。
易小川是很牛的计算机科学家,他当然会找到最大的空地,但是你知道吗?
为简化问题,所有的树都当成一个点。
Input
首先1-4行每行两个实数,分别代表矩形4个端点的坐标(x1, y1), (x2, y2), (x1,y2), (x2, y1), 矩形的左下角为x1, y1, 右上角为x2, y2.
第5行输入一个整数n, 代表森林里面还有n颗树
接下来有n行,每行两个实数,代表这颗树的坐标
(0 ≤ n ≤ 96)
所有坐标范围([0.0, 10000.0], [0.0, 10000.0])
Output
输出仅一行。
输出一个实数r,代表最大圆形空地的半径大小。
答案保留2位小数。
Sample Input
0.0 0.0
10.0 5.0
0.0 5.0
10.0 0.0
2
1.0 1.0
4.0 1.0
Sample Output
4.33
------解决方案--------------------
遍历,每两点之间画圆,检查园是否超边界,是否有其他点;如果满足要求,刷新最大半径并记录。
------解决方案--------------------
易小川,哈哈。
金莎 - 星月神话
作词:金莎 作曲:金莎
我的一生最美好的场景
就是遇见你
在人海茫茫中静静凝望着你
陌生又熟悉
啊~啊 啊~啊~啊 啊~啊 啊~啊
尽管呼吸着同一天空的气息
却无法拥抱到你
如果转换了时空身份和姓名
但愿认得你眼睛
千年之后的你会在哪里
身边有怎样风景
我们的故事并不算美丽
却如此难以忘记
Music...
啊~啊 啊~啊~啊 啊~啊 啊~啊
尽管呼吸着同一天空的气息
却无法拥抱到你
如果转换了时空身份和姓名
但愿认得你眼睛
千年之后的你会在哪里
身边有怎样风景
我们的故事并不算美丽
却如此难以忘记
如果当初勇敢的在一起
会不会不同结局
你会不会也有千言万语
埋在沉默的梦里
------解决方案--------------------
想错了,各位高手继续
------解决方案--------------------
3个点才能确定一个圆,因此最大的圆必然会跟3个点相切,如若不然,这个圆必然还是可以扩大的,所以题目中存在的圆必然是经过3个点,因此可以遍历任意3点,然后算出这3个点确定的圆心,然后判断这个圆之内是否还有别的点,如果没有,则是满足条件。找出这种由3个点确定的圆内没有其它点的最大圆即可。
这种算法不是很优化,但幸好题目对树木的个数做了限制,中间最多96棵,加上4个角的4棵,任意3个点的组合最多有C(100,3)=100*99*98/6=161700种。
------解决方案--------------------
二楼好精辟
------解决方案--------------------
支持4楼,需要判断圆心是否在森林内
但是不需要判圆是否超出森林边界
根据题意,圆居然可以出森林边界。。。
------解决方案--------------------
4楼的做法很多没考虑到,1。没考虑到圆心必须在内部,2。最大圆没必要必须过3点,如果只有3个集中在左上,显然过这3点的不是最大的圆。题目还是很复杂的。
想一个最简单的模型,只有3个点就已经很复杂了,任意取2点,然后做垂直平分线,与矩形区域必然有2个交点,分别计算是否包含第3个点,一个最多6个符合条件的,加上过这3点的一个,7个值取半径最大的那个,3点这样算大概问题不大,但是多点大概就不行了
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
wtbike已经说明了你举的例子的问题了,请仔细看我的算法,顶点的4棵树是必须包括在内的
------解决方案--------------------
当n=0,只有矩形4个顶点。满足要求的最大的圆心就是矩形中心,最大半径就是中心到顶点的距离R_MAX。
往矩形中添加点,只会压缩这个圆,所以最大的半径不能超过R_MAX。
100个点,每次取3个点确定圆心坐标,先判断坐标位于矩形内部而且半径不超过R_MAX,满足这2个条件再与其他的点一一计算距离,不满足就不用计算了,直接取下3个点。
这样似乎能优化一点。
------解决方案--------------------
我只会画图,不会说。。。。