1 条题解
-
0
题意:刚看这道英语题的时候意思大概能读懂,大概就是问你一个长方形能不能放到另一个长方形里面,注意如果箱子是一样的a=4,b=4,x=4,y=4是放不进去的,必须要大于才行
思路:原来以为只要判断 a>x&&b>y就可以了,但是没有想到箱子可以斜着放,如果a>x&&b>y可以放,如果ab<=xy不可以放,如果b<y不可以,但是如果a<x的话就在判断斜着放的情况就行了,如果a>h就可以放进去,否则不能,求h的话要用到数学反余弦函数,还需要做辅助线判断角的度数,{注意:acos(m)=n的话,cos(n)=m},角的度数的话如图所示,应该很清楚了
#include <iostream> #include<string.h> #include<algorithm> #include<stdio.h> #include<math.h> using namespace std; int main() { double a,b,x,y; int t; scanf("%d",&t); while(t--) { scanf("%lf%lf%lf%lf",&a,&b,&x,&y); if(a<b){swap(a,b);} if(x<y){swap(x,y);} if(a>x&&b>y) { printf("Escape is possible.\n");continue; } if(b<y) { printf("Box cannot be dropped.\n");continue; } if(a*b<=x*y) { printf("Box cannot be dropped.\n");continue; } double angle,d,h; d=sqrt(x*x+y*y); angle=acos(y/d)-acos(b/d); h=cos(angle)*x+sin(angle)*y; if(a>h) { printf("Escape is possible.\n"); } else { printf("Box cannot be dropped.\n"); } } return 0; }
- 1
信息
- ID
- 381
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者