ABC301の振り返り
振り返りです。
import sys from io import StringIO input = lambda: sys.stdin.readline()[:-1] def test(f, data): stdin = sys.stdin stdout = sys.stdout sys.stdin = StringIO(data["in"]) out = StringIO() sys.stdout = out err = None try: f() except BaseException as e: err = e else: ans = out.getvalue() exp = data["out"] sys.stdin = stdin sys.stdout = stdout if err: raise err result = "AC" if exp == ans else "WA" print(f"{result}: expected: {exp}, output: {ans}") def test_all(f): for i, data in enumerate(eval(f'test_data{f.__name__[0]}'), 1): print(f"case {i}") test(f, data)B - Fill the Gaps
やってみよう!
B
関数を完成させて「Run」ボタンをクリックしよう!
自由欄
コンテスト中
こんな感じ。
def B(): N = int(input()) (*A,) = map(int, input().split()) print(A[0], end=" ") for i, a in enumerate(A[1:]): if abs(a - A[i]) > 1: if a > A[i]: print(*range(A[i] + 1, a), end=" ") else: print(*range(A[i] - 1, a, -1), end=" ") print(a, end=" ") test_all(B) # 末尾の無駄なスペースがある & 改行がないのでここではWAですがAtcoder上ではAC判定になります結果:#41357753
自由欄
振り返り
こんな感じ。
Booleanでうまいこと±1だけとれないかなぁとやってみた。
結果:#42306898
自由欄
C - AtCoder Cards
やってみよう!
C
関数を完成させて「Run」ボタンをクリックしよう!
自由欄
振り返り
結果、コンテスト中のAC提出とほとんど同じ(ちょっとスッキリ)になりました。
def C(): from collections import defaultdict from string import ascii_lowercase as abc S = input() T = input() s_chars = defaultdict(int) t_chars = defaultdict(int) for s, t in zip(S, T): s_chars[s] += 1 t_chars[t] += 1 for char in abc: s = s_chars[char] t = t_chars[char] if char in "atcoder": if s > t: t_chars["@"] -= s - t elif t > s: s_chars["@"] -= t - s else: if s != t: print("No") return print("Yes" if t_chars["@"] >= 0 and s_chars["@"] >= 0 else "No") test_all(C)結果:#42307631
自由欄
D - Bitmask
やってみよう!
D
関数を完成させて「Run」ボタンをクリックしよう!
自由欄
振り返り
コンテスト中は「よく分かんねぇ~」と思ってソッコーで諦めましたが、今振り返ってみるとフツーに解けました。
前々回ぐらいから、惰性で参加してたのがよく分かる・・・😇
結果:
自由欄
E - Pac-Takahashi
さっそく解説を見ます。
巡回セールスマン問題。。「アルゴリズム」の話題でよく出てくるので名前だけは知ってますが、急に実装しろとなると困る😫
という訳でもっと元気なときの宿題とします。