ABC 071 C問題 Make a Rectangle
かかった時間:30min 1発AC
考察の過程
面積を大きくしたいので長い棒から貪欲にとっていけばいい.
ただ長方形でなければいけないので,同じ長さの棒が2本以上あるところからとらなければならない.
また,4本以上同じ長さのものがあったらそこから4本とって正方形にしてしまえばいい.
ソートして長い方から見ていけばいいので,計算量はO(N logN)となる.
コード
https://beta.atcoder.jp/contests/abc071/submissions/2760584
反省
- 同じ長さの棒の本数を数える→長方形の辺にするかの判定をするところが3分岐していてややこしい感じになってしまっている.
- 他の人のコードなどを見ると,すべての棒を見ていき,同じ長さの棒が2本あったら1セットとしてリストなどに放り込む→全て放り込んだ上で,それを長い方から見ていって2セットとったのが答え,としている.こういうシンプルな考え方ができるようにならなければいけない.アルゴリズムがややこしくて間違えそう,なときはシンプルに考えられないか?を常に問いかけること(自戒).