AC:http://codeforces.com/contest/560/submission/12460603
解題方向:模擬
因為論壇壞了,把Code搬來這裡。
題目大意:有一個大矩形,問裡面能不能放入另外兩個矩形 (不能重疊,只考慮水平與垂直翻轉)
解法:可發現若兩矩形邊長為$A \times B$、$C \times D$,那最小包覆矩形至少要$(A+C,min(B,D))$,自己把ABCD排列組合一下,有任何一種狀況能滿足就可以了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int a[2],b[2],c[2];
cin>>c[0]>>c[1];
cin>>a[0]>>a[1]
>>b[0]>>b[1];
bool flag = false;
for(int k=0;k<=1;++k)
for(int i=0;i<=1;++i)
for(int j=0;j<=1;++j)
if( a[0^i]+b[0^j] <=c[0^k] && max(a[1^i],b[1^j]) <= c[1^k] )
flag = true;
cout<< (flag?"YES":"NO") << '\n';
}
沒有留言:
張貼留言