0.はじめに
先週緑にギリギリ上がったので、もう少し余裕を持ったレートにしたいと挑んだ今回。
A~Cは順調に解けましたが、Dがどうにも上手くいかない・・・。
Eを見てみたら、インタラクティブで考え方自体は簡単で
実装方法のみだな。という感じだったのでそちらにチャレンジし
めでたく4問正解となりました。
レートだいぶ上がるかなとおもいきや、まさかのレートマイナス1で
世の中は甘くないことを知りました。
1.A - Doors in the Center
最初ちょっと意味が分かりませんでしたが、問題名を見て
=がドアでこれを真ん中に持ってくる感じなのねと気づきました。
=が1個か2個なので、偶奇で場合分けをして、それぞれの
壁(-)にドア(=)を挟む形で実装しました。
https://atcoder.jp/contests/abc398/submissions/64030719
2.B - Full House 3
まずはカウンター関数でリスト内の数字毎の個数を取得。
数字内の個数で並べ替えても良かったのですが
それも面倒だったので、単純に3枚以上あるフラグと
2枚以上あるフラグを用意して、カウンター内の
個数が3以上の要素があれば3フラグを立て
2以上があれば2フラグを立てて
最後にフラグが両方立っていればYesとしました。
ポイントとして3枚3枚のケースを考え、3フラグが立っているときに
3枚以上が来たときは2フラグを立てるようにしました。
https://atcoder.jp/contests/abc398/submissions/64041730
3.C - Uniqueness
こちらもカウンターを使う問題。
まずリストをカウンター関数で数字毎の持っている人数に変換。
カウンターの要素をすべて見ていき、持っている人が1人の数のうち
一番大きい数Xを確定。
最後にリストを端から見ていき、Xの位置を出力して終了。
持っている人が1人の数が無ければ-1を出力して終了。
https://atcoder.jp/contests/abc398/submissions/64050062
4.E - Tree Game
インタラクティブはテストがむずかしいんだよな。
とおもいつつもDが見込みなしなので挑戦。
【考え方】
1.最初のインプットを読み込み木グラフに加える事の
出来る辺を以下の条件で求める
・追加順に関わらず一定
・頂点i,jの組(i<j)のうち以下を共に満たす組
-距離が2以上(辺が張られていない)
-距離が奇数(つなげた時奇閉路にならない)
2.上記辺の組数が奇数ならFirstを出力し
辺の組から一つ取出して出力
3.辺の組数が偶数ならSecondを出力
4.以下、相手のアウトプットが-1になるまで
相手のアウトプット分を辺の組から消し、
残った辺の組から任意の一つを出力していけば
勝利できる。
奇閉路等、聞きなれない言葉はありましたが
実装してしまえば何とかなる問題でした。
https://atcoder.jp/contests/abc398/submissions/64095802
以上