[ABC223E] Placing Rectangles 题解

题目大意

给定三个数 a , b , c a,b,c a,b,c,询问是否有某种摆放三个面积分别至少 a , b , c a,b,c a,b,c 的矩形的方式,满足摆放出来的图形能被一个 x × y x\times y x×y 的矩形区域完全包含。

解题思路

很显然是数学题。又因为要摆放矩形总共只有三个,于是考虑枚举,情况只有以下三种:

∘ \circ 三个矩形均横放或竖放。

∘ \circ 两个矩形横放,剩下一个贴着这两个竖放。

∘ \circ 两个矩形竖放,剩下一个贴着这两个横放。

(一个矩形竖放或横放其实和上面情况无本质区别)

代码示例

#include<bits/stdc++.h>
using namespace std;
#define int long long
//已知矩形一边时,计算另一边至少为多少满足面积至少为a或b或c。
#define getans(a,b) (a+b-1)/b
int x,y,a,b,c,ld,ans=0;
signed main(){
	cin>>x>>y>>a>>b>>c;
    //三个都横放或竖放
	if(getans(a,x)+getans(b,x)+getans(c,x)<=y||getans(a,y)+getans(b,y)+getans(c,y)<=x) ans=1;
    
	ld=x-getans(a,y);
	if(ld>0&&getans(b,ld)+getans(c,ld)<=y) ans=1;
	ld=x-getans(b,y);
	if(ld>0&&getans(a,ld)+getans(c,ld)<=y) ans=1;
	ld=x-getans(c,y);
	if(ld>0&&getans(a,ld)+getans(b,ld)<=y) ans=1;
    
	ld=y-getans(a,x);
	if(ld>0&&getans(b,ld)+getans(c,ld)<=x) ans=1;
	ld=y-getans(b,x);
	if(ld>0&&getans(a,ld)+getans(c,ld)<=x) ans=1;
	ld=y-getans(c,x);
    
	if(ld>0&&getans(a,ld)+getans(b,ld)<=x) ans=1;
	if(ans==1) cout<<"Yes"<<endl;
	else cout<<"No"<<endl;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值