1 条题解
-
0
题目分析
我们需要判断一个尺寸为A×B×C的长方体砖块能否通过一个尺寸为D×E的矩形洞口。关键在于比较砖块的某个侧面是否能完全放入洞口。
关键思路
砖块的侧面选择:砖块有三个不同的侧面,分别是A×B、A×C和B×C。我们需要检查这些侧面中是否至少有一个能放入洞口。
洞口的适配:对于每个砖块的侧面,我们需要检查其长和宽是否能以某种方向(旋转90度)适配洞口的长和宽。
尺寸比较:对于砖块的每个侧面,计算其最小和最大边长,然后与洞口的最小和最大边长比较。如果砖块侧面的最小边 ≤ 洞口的最小边,且砖块侧面的最大边 ≤ 洞口的最大边,则可以通过。
解决步骤
输入处理:读取五个浮点数A、B、C、D、E。
砖块侧面生成:计算砖块的三个侧面尺寸:(A,B)、(A,C)、(B,C)。
侧面适配检查:对于每个侧面,计算其最小和最大边长,然后与洞口的最小和最大边长比较。
结果输出:如果任何一个侧面满足适配条件,输出"YES";否则输出"NO"。
//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <bitset> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 110000 #define mod 10007 #define eps 1e-9 #define pi 3.1415926 int Num; //const int inf=0x7fffffff; //§ß§é§à§é¨f§³ const ll Inf=0x3f3f3f3f3f3f3f3fll; inline ll read() { ll x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } //************************************************************************************** double a[3],d,e; int flag=0; void solve(int x,int y) { for(double i=0;i<=90;i+=0.001) { double ttt = i*pi/180; double l = a[x]*cos(ttt)+a[y]*sin(ttt); double k = a[x]*sin(ttt)+a[y]*cos(ttt); if(l<=d&&k<=e) { cout<<"YES"<<endl; flag=1; return; } } } int main() { freopen("bricks.in","r",stdin); freopen("bricks.out","w",stdout); for(int i=0;i<3;i++) cin>>a[i]; cin>>d>>e; for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { if(i==j) continue; solve(i,j); if(flag) return 0; } } printf("NO\n"); } ``` ```
- 1
信息
- ID
- 1173
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者