htkb-proconの日記

初心者がPythonで問題解いた記録

AtCoder Beginner Contest 064 参戦記

oooo unrated

A - RGB Cards

結果:AC
http://abc064.contest.atcoder.jp/submissions/1339289

(100*r+10*b+g) % 4 == 0で判定。

B - Traveling AtCoDeer Problem

結果:AC
http://abc064.contest.atcoder.jp/submissions/1339821

max(a) - min(a)を出力。

C - Colorful Leaderboard

結果:AC(1WA)
http://abc064.contest.atcoder.jp/submissions/1342283

これ罠すぎるんですけど!!!レートによって色が決定されるけど、レート3200以上の人は自由に色を決められるよ。そんとき最小・最大何色になるの?って問題だけど、レート3200以上はそれ以下の8色の中から選べるのではなくて本当に無限の色の中から好きな色を選べるので、min(colors+pro, 8)とかやっちゃダメ(やりました)。入出力例の説明の中に

4 人目が「赤色」を選び、5 人目が「青色」を選んだ時、色の種類数は 3 であり、これは最小値を取る一つの例である。
4 人目が「紫色」を選び、5 人目が「黒色」を選んだ時、色の種類数は 5 であり、これは最大値を取る一つの例である。

と8色の中にない色を選んでいる例が挙げられているので、ここで気付かなければならない模様。

実装としてはnumpy.array

colors += ((a >= スコア下限) & (a <= スコア上限)).sum() > 0

などとして色数を取ってみたよ。numpyマスターしたい……!

D - Insertion

結果:AC
http://abc064.contest.atcoder.jp/submissions/1343809

与えられた文字列を一文字ずつ見ていって、

  • (が来たら深さ+1
  • )が来たら深さ-1
  • 深さ0なのに)が来たら先頭に(を追加
  • 読み終わったのに深さが1以上なら深さ分の)をお尻に追加

とやった。正当性がよくわかんないままぶん投げたら通ったけどあってんのこれ……?(このやり方だと頭とお尻以外一切触らないんだよなあ……)正当性の証明ができないままぼんぼん投げてCodeforcesなどでボコボコhackされたりシステスで落とされたりしてるのでなんとかしたい。