調子が悪かったので寝ていたら終わってました。1時間以下で解けてしまったので所感だけ。
コンテストURL
https://beta.atcoder.jp/contests/abc079
問題
A問題
4桁の数字が与えられるので、上3つまたは下3つが同じ数値ならYes、そうでないならNoを出力する。
言語:Python3
print("Yes" if (lambda x: int(x[1:])%111==0 or int(x[:-1])%111==0)(input()) else "No")
B問題
ある法則で与えられるリュカ数を計算して出す問題。フィボナッチ数列求めるみたいに出来る。nまで求めればと良かったが、どうせ同じようなものを毎回求めるため、毎回n=86になるものまで求めて出しておいた。
言語:Python3
l = [2, 1] for i in range(2, 87): l.append(l[i-2]+l[i-1]) print(l[int(input())])
C問題
与えられた4つの数値を加減算で7になるものを求める問題。
…はい。制約見て大丈夫なので即全探索でevalします。zipでまとめてから、Dの部分だけ足してあげると見やすいかな、と思って最終的には下記の形になりました。
言語によっては最初のABCDをパースするところが若干難しいんじゃないかな?
言語:Python3
l = list(input()) for i in range(8): p = ["+"if i&j else"-" for j in[1, 2, 4]] line = "".join([v+o for v,o in zip(l,p)]) + l[3] if eval(line) == 7: print(line + "=7") break
D問題
最小コストで壁画の数値を変換してくださいという問題。
前提として-1, 1は変換対象にしません。その上で予め ダイクストラ ワーシャルフロイド法を使って、N → 1 の変換の最小コストを求めておき、その計算結果を使って変換をかけてあげればOKです。
表の大きさが固定値の ダイクストラ ワーシャルフロイドなんて初めて使いました…。
※ワーシャルフロイドでといているのに、ダイクストラと書いてたのはなぜ…(Twitterで指摘頂いたので修正)
言語:C++ コードは長いためリンクとし、省略します。 https://beta.atcoder.jp/contests/abc079/submissions/1789416
まとめ
出とけばよかった。割りと得意な問題が出ていたので、全完セットだと思う。Twitterで答え要約を見てから解いたが、50分程でトキ終わっているので、おそらく本番で出ても今回は行けたセットだと思う。
惜しいことをした…。体調管理はしっかりやっておこう。
何このコメント(酒が抜けきってないコメントやめろ pic.twitter.com/S9FZvd6fmF
— yumechiなんでもやるロボ (@yumechi0525) 2017年11月18日