0.はじめに
今年最後のABCに挑戦。
原因不明の肩痛になやませられながらも、久々のA~DをAC。
ケアレスミスもありましたが、レートも+53の732と
いい感じで1年をしめくくれました。
1. A - Full House 2
counterを使えとばかりの問題。
数毎にカウントして、カウント数が2の物が2個か
3の物が1個あったらYes、それ以外はNoを出力して終了
https://atcoder.jp/contests/abc386/submissions/61146640
2.B - Calculator
電卓問題。
何か見たことある気もしつつ、文字列を順に読んでいき
0が連続していれば00を、それ以外はそれぞれのキーを
押した体でカウントしていき、最後にカウントを出力して終了。
と、簡単な問題なのに、考慮不足で1回WAを食らいました・・・。
https://atcoder.jp/contests/abc386/submissions/61156704
3.C - Operate 1
丁寧に場合分けしていけばさほど難しくない問題。
【考え方】
1.SとTの長さが同じ場合
SとTを先頭から比較していき差が1文字だったらYes
→1文字入れ替える操作を1回行う
2.SとTの長さの差が1の場合
短い方の文字列をもとに先頭から比較していき
違う文字があらわれた場合、長い方を一つとばす
その後差が無かったら、Yes
→Sが長ければ、1文字削除を1回行う
Tが長ければ、1文字追加を1回行う
3.上記以外の場合はNo
https://atcoder.jp/contests/abc386/submissions/61168498
4.Diagonal Separation
ぱっとみて、1行目から白ますが指定されるマスまでは
黒く塗っていくよう、境目を記憶していき
前の行よりの境目より、黒を指定されたマスが右に来るようならNo
最後の行まで右に来なければYesとすればよいことが分かりました。
【実装1】
・N行分のBとWの列を持ち管理する
→余裕でTLE
【実装2】
・マス指定がある行だけ辞書に保持して管理する
→チェックを1~Nまで行ったところTLE
【実装3】
・マス指定がある行だけ辞書に保持して管理する
→チェックもマス指定がある行だけにしたところAC
TLEをいかに回避するかの問題なのを最初から考慮すれば10分短縮できた
カナと思います。
https://atcoder.jp/contests/abc386/submissions/61189634
以上