AtCoder Beginner Contest 223 E - Placing Rectangles
長方形の張り方としては上の2パターンみたいな感じに分類できる
最初に 1 の置き場所を決める
1 は、上に長方形を接地しないことにする。
上に長方形を接地するようなパターンが最適だとしたら、
右側に、上に長方形が設置されていない長方形があることになる。
というわけで最初に、上に長方形を接地してないやつの置き場所を決める
できるだけX軸かY軸に押し付けるような形にしたほうが、残りの2個を置くための場所がとれそう
どっちの軸に押し付けるかの全探索と ABCのpermutationを全部試した
- fn solve(){
- let sssss = std::io::stdin();
- let mut sc = Scanner { stdin: sssss.lock() };
- let mut x:i64 = sc.read();
- let mut y:i64 = sc.read();
- let mut A:i64 = sc.read();
- let mut B:i64 = sc.read();
- let mut C:i64 = sc.read();
- let mut v= vec![A, B, C];
- let mut ok = false;
- fn dfs(x:i64, y:i64, i:usize, d:usize, v:&Vec<i64>)->bool{
- if x<0 || y<0{
- return false;
- }
- if i != 3 && x == 0 || y == 0{
- return false;
- }
- if i == 3{
- return true;
- }
- let mut res = false;
- if d == 0{
- let mut s = *1{
- let mut p = perm.into_iter().map(|x| *x).collect();
- ok |= dfs(x, y, 0, 0, &p);
- ok |= dfs(x, y, 0, 1, &p);
- }
- if ok{
- println!("Yes");
- }
- else{
- println!("No");
- }
解説とかツイッターとか見た
本番ではかなり無理そう