AtCoder ABC151
AtCoder ABC151解いた分だけまとめ。
今回はAB2完、Cもいけそうだったけどパターンの見落としでアウト。
5回くらいWAになったので撤退しました。
目次
A. Next Alphabet
次の文字を出力してください、ということでASCII変換を使う。
入力をASCIIコードに変換して、次の文字のASCIIコードを出す。
出力する時に文字に直せば簡単に求まる。
ACしたコード
#coding:utf-8 c = input() ans = ord(c) + 1 print(chr(ans))
B. Achieve the Goal
平均点、というより合計点で考えていく。
平均点×テストの回数で最低の目標の合計点を求め、それと今までの回の合計点を比較する。
あとは場合分けで、普通に答えが出る場合と、以下の2パターンで場合分けする。
- すでに目標の平均点を上回っている時
- 次のテストで満点を上回っても無理な場合
ACしたコード
#coding:utf-8 n, k, m = map(int, input().split()) a = list(map(int, input().split())) border = m * n total = sum(a) goal = border - total #すでに目標の平均点を上回っている場合 if goal < 0: print(0) #次のテストの満点を上回ってでも無理な場合 elif goal > k: print(-1) else: print(goal)
C. Welcome to AtCoder
ここから解説AC。言われた仕様の通りちゃんと実装できるか問題。
結構良い問題だなーと思ったのと、知らなかったルールがあった笑
ペナルティってWAで終わった場合つかないのね...
実装において必要な情報は、
- 各問題についてACを出したか確認しておくこと
- 各問題のWAの数を数えておくこと
- ペナルティとなるWAの数は、その問題でACが出たら加算する
- ACした後にWAやACをしても加算されない
ACしたコード
#coding:utf-8 n, m = map(int, input().split()) ac = [0] * n wa = [0] * n pena = 0 for i in range(m): p, s = map(str, input().split()) if ac[int(p)-1]: #すでに正解していれば次の入力へ continue if s == 'AC': ac[int(p)-1] = 1 #ACが出てからそれまでその問題で出たWAの回数をペナとする pena += wa[int(p)-1] elif s == 'WA': wa[int(p)-1] += 1 print(sum(ac), pena)