れとろのメモ置場

とあるSEのメモ置場

AtCoder Beginner Contest 295

AtCoder Beginner Contest 295に参加しました。

結果

A,B,Cの3問正解でした。

D問題が難しかった。あと普段より頭の回転が鈍かった気がするなあ。

英字配列のHHKB使ってしばらく経つけど相変わらず慣れないなあ… 脳のリソースの一部がキー入力に持っていかれる。大人しくJIS配列のキーボード買い直そうか… 普段ネットする程度なら大丈夫なんだけどなあ。

A - Probably English

与えられるN個の単語に指定された単語が含まれるかどうかを答える問題。

ループを回しつつ、if文なりで探している単語と一致しているかどうかを確認して、 最後にYes/Noを出力すればいい。

if文での文字列判定やループが使えるかどうかな問題だと思う。

B - Bombs

説明は簡単だけど実装は面倒な処理を正確に実装する問題。

入力用の盤面と出力用の盤面を用意して、 入力用の盤面に応じて出力用の盤面を作成していった。

爆弾があればマンハッタン距離の範囲で空きマスに更新していく処理がちょっと面倒。 今回は中心座標と範囲を渡すと空きマスに更新する関数を作って処理していった。

C - Socks

N枚の靴下の色を与えられるのでいくつ同じ色のペアが作れるかを答える問題。

連想配列で色別に枚数を数えておき、枚数割る2で何ペア作れるのかを全色分計算して答えれば良い。 連想配列を知っているかどうかな問題だと思う。

Nや色の種類の制約が大きめだからC問題にいるけど、実装の楽さならB問題よりも簡単だと思う。

D - Three Days Ago

文字列Sが与えられるので条件を満たす区間を数え上げる問題。

いろいろ考えたけど結局解けなかった。
愚直に解こうとするとN(|S|^ {2})になってTLEしそう。

あとは、区間の数え上げなのでしゃくとり法が使えそうな気がして考えてみたけど、今回はしゃくとり法が使える種類の問題じゃなかった。

結局解けそうな方法は思いつかなかった。