[2018.10.25 T1] 妹子

暂无链接

妹子

【题目描述】

万人迷皮皮轩收到了很多妹子的礼物,由于皮皮轩觉得每个妹子都不错,所以将她们礼物的包装盒都好好保存,但长此以往皮皮轩的房间里都堆不下了,所以只能考虑将一些包装盒放进其他包装盒里节省空间。

方便起见,我们不考虑包装盒的高度和厚度,只考虑包装盒的长宽。

一句话题意:给出两个矩形,问是否可以将一个矩形放在另一个矩形的内部(含边界),多测。

【输入】

第一行,一个整数 n n n,表示数据组数。

对于下面的每一组数据:

第一行,四个整数 a 1 , b 1 , a 2 , b 2 a_1,b_1,a_2,b_2 a1,b1,a2,b2 表示两个盒子的长宽。

【输出】

n n n行,每行一个 “ Y e s Yes Yes” 或" N o No No"(不含引号),分别表示其中一个盒子可以放到另一个盒子中或两个盒子都不能放到另一个盒子中。

【输入样例】

4
4 4 4 4
3 2 4 5
4 5 5 5
1 7 3 2

【输出样例】

Yes
Yes
Yes
No

【提示】
【数据规模与约定】

对于 100 % 100\% 100% 的数据, n ≤ 10 , a 1 , b 1 , a 2 , b 2 ≤ 1000 n≤10,a1,b1,a2,b2≤1000 n10a1,b1,a2,b21000

题解

灵活运用各种小学/初中/高中几何知识 A A A之。

代码
#include<bits/stdc++.h>
#define DB double
using namespace std;
struct box{int x,y;}A,B;
static int n;
int ans;
bool check(box A,box B){
	if(A.x<=B.x&&A.y<=B.y) return 1;
	DB Ad=sqrt((DB)(1.0*A.x*A.x+1.0*A.y*A.y));
	DB _1=asin((DB)(1.0*A.x/Ad)); _1=_1*2.0;
	DB _2=acos((DB)(1.0*B.y/Ad)),k=Ad*sin(_1+_2);
	if(k<=B.x) return 1;
	return 0;
}
void in(){scanf("%d%d%d%d",&A.x,&A.y,&B.x,&B.y);}
void ac()
{
	if(A.x>A.y)swap(A.x,A.y); 
	if(B.x>B.y)swap(B.x,B.y);
	ans=check(A,B)|check(B,A);
	ans?puts("Yes"):puts("No");
}
int main(){for(scanf("%d",&n);n--;)in(),ac();}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值