Placing Rectangles
問題
E – Placing Rectangles
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2022/2/4 解法わからず。
解法

- この図について、全パターン試す。
- 引数を置き換える。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 62; // const int INF = 1001001001; bool f2(ll X, ll Y, ll A, ll B) { ll ay = (A + X - 1) / X; ll by = Y - ay; if(B <= by * X) { return true; } else { return false; } } bool f1(ll X, ll Y, ll A, ll B, ll C) { ll ay = (A + X - 1) / X; if(Y <= ay) { return false; } if(f2(X, Y - ay, B, C)) { return true; } if(f2(Y - ay, X, B, C)) { return true; } return false; } int main() { ll X, Y, A, B, C; cin >> X >> Y >> A >> B >> C; bool ans = false; if(f1(X, Y, A, B, C)) { ans = true; } if(f1(X, Y, A, B, C)) { cout << "Yes" << endl; return 0; } if(f1(X, Y, B, C, A)) { cout << "Yes" << endl; return 0; } if(f1(X, Y, C, A, B)) { cout << "Yes" << endl; return 0; } if(f1(Y, X, A, B, C)) { cout << "Yes" << endl; return 0; } if(f1(Y, X, B, C, A)) { cout << "Yes" << endl; return 0; } if(f1(Y, X, C, A, B)) { cout << "Yes" << endl; return 0; } cout << "No" << endl; return 0; }