ABC111-C:/\/\/\/
問題
https://beta.atcoder.jp/contests/abc111/tasks/arc103_a
数列 が与えられる。以下の条件を満たすように数列を書き換える時、書き換える最小の数列の要素の個数はいくつか?
- 数列に現れる数はちょうど 種類
制約
- は偶数
考え方
が奇数の項と偶数の項に分けて考える。それぞれ o, a としておくと o, a に出現する値のうち最頻値が同じ場合は、次の最頻値以外の個数を書き換える。o, a の最頻値が異なる場合は、それぞれの最頻値以外の個数を書き換える。
Submission #3751909 - AtCoder Beginner Contest 111
どこに着目して考察するべきだったか
数列に現れる個数が 種類であることから、o, a とわけたときに最頻値と 番目の最頻値の情報が必要。
何がバグっていたか
Integer は参照型なので ==
で判定しない。.equals
で判定する。
ごちゃごちゃして面倒であれば、(競プロでは)int型に代入してオートボクシングさせちゃうのも一つの手。