2015年8月11日 星期二

[Codeforces][560B] B. Gerald is into Art

原題:http://codeforces.com/contest/560/problem/B
 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';
}

沒有留言:

張貼留言