Problem 1016 无归之室

Accept: 926    Submit: 7502
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

金字塔中有一个房间名叫“无归之室”。房间地面完全由相同的矩形瓷砖覆盖。房间里布满无数的机关和陷阱,这正是其名字的由来。考古队花了几年时间研究对策,最后他们想出了一个方案。一台遥控的机器人将被送入房间,解除所有机关,然后返回。为了不触动机关,机器人必须走在瓷砖的中心区域上,绝对不能碰到瓷砖的边缘。如果走错一步,机器人会被落下的岩石砸成薄饼。

当考古队正准备行动的时候,他们发现了一件可怕的事情:他们没有考虑到机器人携带的工具箱。由于机器人必须将工具箱放在地面上才能开始解除机关,工具箱不可碰到瓷砖的边缘。现在他们急需你编程判断工具箱可否放下。

 Input

输入文件有多组数据组成。每组数据仅含一行A, B, X, Y (1<=A, B, X, Y<=50000,均为实数)。A, B为瓷砖的长和宽,X, Y为工具箱底面的长和宽(工具箱为长方体)。最后一组数据A=B=X=Y=0,标志文件结束,不需要处理。

 Output

若工具箱能以某种方式放在地上,则输出”Escape is possible.”,否则输出”Box cannot be dropped.”。

 Sample Input

10 10 8 8
8 8 10 10
0 0 0 0

 Sample Output

Escape is possible.
Box cannot be dropped.

审题:1、这一题要用实数,不能想当然直接用int

2、sqrt()括号里要求用浮点数 不能用整数

大矩形与小矩形存在三种情况

  1. 大矩形的长大于小矩形的长,宽大于小矩形的宽,这时肯定可以放得下去;
  2. 大矩形的对角线小于小矩形的对角线,那么也就没有地方容下小矩形了,这时判定否;//重点
  3. 当小矩形的长大于大矩形的长时,此时斜放也可能放进大矩形 //重点
# include<iostream>
# include<math.h>
using namespace std;
int QuickReject(double a,double b,double x,double y) //对全部矩形对进行初步筛选
{
if(x < a && y < b) //绝对满足要求的矩形
{
return ;
}
else if(x*x+y*y>a*a+b*b) //绝对不满足要求的矩形
{
return ;
}
else //可能满足要求也可能不满足的可疑矩形
{
return ;
}
}
int Reject(double a,double b,double x,double y) //对可疑矩形进行进一步筛选
{
double L1,L2;
L1=(a-sqrt((double)(x*x+y*y-b*b)))/;
L2=(b-sqrt((double)(x*x+y*y-a*a)))/;
if( L1*L1+L2*L2>y*y )
{
return ;
}
else
{
return ;
}
}
int main()
{
double A,B,X,Y;
while(true)
{
cin>>A>>B>>X>>Y;
if(A== && B== && X== && Y==)
{
break;
}
if(A < B)
{
double t;
t=A;A=B;B=t;
}
if(X < Y)
{
double t;
t=X;X=Y;Y=t;
}
int flag;
flag = QuickReject(A,B,X,Y);
if(flag == )
{
cout<<"Escape is possible."<<endl;
}
else if(flag == )
{
cout<<"Box cannot be dropped."<<endl;
}
else
{
flag = Reject(A,B,X,Y);
if(flag == )
{
cout<<"Escape is possible."<<endl;
}
else
{
cout<<"Box cannot be dropped."<<endl;
}
}
}
return ;
}

最新文章

  1. 迷你MVVM框架 avalonjs 实现上的几个难点
  2. dr.wondr博士随笔之三星某智能机的SGHXXXX 的取证恢复一例
  3. java的重写规则
  4. Smarty3学习笔记
  5. magento搬家步骤和可能遇到的问题
  6. linux网络编程笔记——UDP
  7. linux之SQL语句简明教程---UPDATE DELETE FROM
  8. 漫谈PHP代码规范
  9. Eclipse中的所有快捷键列表
  10. C++中const的实现细节介绍(C,C#同理)
  11. ubuntu中vi下删除键和上下左右键的异常解决
  12. MyBatis动态创建表
  13. MyBatis笔记----多表关联查询两种方式实现
  14. CentOS 7 无法yum安装解决方法
  15. stark组件之路由分发【模仿Django的admin】
  16. 重识 PWA 进阶到 workbox3
  17. 新建MVC3 编译出现 System.Web.Mvc.ModelClientValidationRule
  18. Python小白学习之路(二十)—【打开文件的模式二】【文件的其他操作】
  19. Python 应用剖析工具介绍
  20. How to omit h1 title heading in HTML export

热门文章

  1. 【洛谷P1323】删数问题
  2. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
  3. element el-tooltip 内容换行的方法
  4. 通过增量备份恢复来处理Oracle DG 复制GAP
  5. react中实现原生enter/回车事件及antdesign组件实现方式
  6. BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)
  7. 还在使用pdf、word简历?简单五步实现github托管个人逼格简历
  8. 使用 python快速搭建http服务
  9. Windows Server 2012 搭建DHCP及远程路由访问
  10. ethereum(以太坊)(十一)--字节数组(二)