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'; }
沒有留言:
張貼留言