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セットとったのが答え,としている.こういうシンプルな考え方ができるようにならなければいけない.アルゴリズムがややこしくて間違えそう,なときはシンプルに考えられないか?を常に問いかけること(自戒).