FOJ Problem 1016 无归之室
2024-08-27 08:21:38
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
8 8 10 10
0 0 0 0
Sample Output
Escape is possible.
Box cannot be dropped.
Box cannot be dropped.
审题:1、这一题要用实数,不能想当然直接用int
2、sqrt()括号里要求用浮点数 不能用整数
大矩形与小矩形存在三种情况
- 大矩形的长大于小矩形的长,宽大于小矩形的宽,这时肯定可以放得下去;
- 大矩形的对角线小于小矩形的对角线,那么也就没有地方容下小矩形了,这时判定否;//重点
- 当小矩形的长大于大矩形的长时,此时斜放也可能放进大矩形 //重点
# 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 ;
}
最新文章
- 迷你MVVM框架 avalonjs 实现上的几个难点
- dr.wondr博士随笔之三星某智能机的SGHXXXX 的取证恢复一例
- java的重写规则
- Smarty3学习笔记
- magento搬家步骤和可能遇到的问题
- linux网络编程笔记——UDP
- linux之SQL语句简明教程---UPDATE DELETE FROM
- 漫谈PHP代码规范
- Eclipse中的所有快捷键列表
- C++中const的实现细节介绍(C,C#同理)
- ubuntu中vi下删除键和上下左右键的异常解决
- MyBatis动态创建表
- MyBatis笔记----多表关联查询两种方式实现
- CentOS 7 无法yum安装解决方法
- stark组件之路由分发【模仿Django的admin】
- 重识 PWA 进阶到 workbox3
- 新建MVC3 编译出现 System.Web.Mvc.ModelClientValidationRule
- Python小白学习之路(二十)—【打开文件的模式二】【文件的其他操作】
- Python 应用剖析工具介绍
- How to omit h1 title heading in HTML export
热门文章
- 【洛谷P1323】删数问题
- 第24章 	SPI—读写串行FLASH—零死角玩转STM32-F429系列
- element el-tooltip 内容换行的方法
- 通过增量备份恢复来处理Oracle DG 复制GAP
- react中实现原生enter/回车事件及antdesign组件实现方式
- BZOJ4198: [Noi2015]荷马史诗(哈夫曼树)
- 还在使用pdf、word简历?简单五步实现github托管个人逼格简历
- 使用 python快速搭建http服务
- Windows Server 2012 搭建DHCP及远程路由访问
- ethereum(以太坊)(十一)--字节数组(二)