0.はじめに
さーてやるか!と思ったら今週は日曜日開催で肩透かしを食らった今日この頃。
A~CをCにてこずりつつもクリアし、Dに。
考え方が分かれば拍子抜けするほどかんたんだったのでそのままEに。
Eも行けそうな雰囲気はありましたが、考え方が足りずに時間切れ。
レートはそれでも+24の840とちょっと取り戻せました。
1. A - Not X
Nが1なら2、そうでなければ1を出力して終了としました。
https://atcoder.jp/contests/abc474/submissions/78996821
2. B - Exit Order
条件として、1~10番目に出る人は1~10の人
11~20番目に出る人は11~20の人となるよう、
iを回しつつチェックして条件を満たさない時はNoを出力して終了
最後の人まで条件を満たしていればYesを出力して終了としました。
https://atcoder.jp/contests/abc474/submissions/79003453
3. C - Remove and Append
まぁ、リストを作ってアドレス指定削除してアペンドする・・・とすると
おそらくTLEなので工夫しました。
【考え方】
・クエリー毎の動きとしては、入力された数字の位置を一番後ろに持ってくる
・辞書のキーを数字、値にリスト上の数字の位置を保持する。
・クエリーで指定された数字については辞書の位置を一番後ろに書き換える
・最後の辞書の値(リスト上の位置)でソートして位置順に値を出力して終了
https://atcoder.jp/contests/abc474/submissions/79010932
4. D - Outweigh
問題を読んで、これは簡単なのでは・・・思い恐る恐る回答を提出したら
ACとなりました。
【考え方】
・種類ごとの石の数が高橋君の方が多い石1種類に関してのみ石の重さを10の18乗とし
それ以外は重さを1とすれば高橋君の方が総和が重くなる
・種類ごとの石の数が高橋君の方が多い石が1種類もない場合は条件を満たせないのでNoを出力
コンテスト後解説を見ると、上記の考え方に気づくこと自体が問題だったようです。
https://atcoder.jp/contests/abc474/submissions/79013490
以上