AtCoder Beginner Contest 158
やりました。解説というより単なるやったメモ、という感じ。
A - Station and Bus
全部一緒ならNo、違ったらYes→AとBの数を数えて3ならNo
(解説見ると文字列でとって、1文字目と2文字が同じ かつ 2文字目と3文字目が同じ、でやってますね。スマート…!)
S = list(input()) s_A = [s for s in S if 'A' in s] s_B = [s for s in S if 'B' in s] if len(s_A) == 3 or len(s_B) == 3: ans = 'No' else: ans = 'Yes' print(ans)
B - Count Balls
愚直に青赤のセットで割れるものは数を計算して、余ったものは青の長さと比べて足す、とやりました。
後半部はmin(rem,A)でいけたのか…(解説読んだ)
N, A, B = map(int, input().split()) set_blue = A*(N // (A + B)) rem = N % (A + B) if rem >= A: rem_blue = A else: rem_blue = rem print(set_blue + rem_blue)
C - Tax Increase
最初は方程式の感じで解こうとしましたが、どうもうまくいかず、どうしたものかと考えていたら
1 ≦ A ≦ B ≦100
に目がいき、これなら全数探索でいけるのでは?とやったらいけました。
解説に
最大でも考える必要のある金額は 1009 円であるため 1
とあるので、range(1,1011)とあるのはちょっと計算多いです。
(単に、超えるのはどこだと思って、101 / 0.1 した結果が 1010だったのでそれ使った感じです。ちょっと多い分には問題なさそうですが、あまりに多いとよくないですね)
import math A, B = map(int, input().split()) for i in range(1, 1011): n_a = math.floor(i * 0.08) n_b = math.floor(i * 0.1) if n_a == A and n_b == B: ans = i break ans = -1 print(ans)
D - String Formation
これはハマりました。。。愚直にやっていたらどう頑張ってもTLEで、文字列の連結を+ではなくlist, joinにしてみたり、depueを使ってみたり、input()を変えてみたり、としていたところで時間切れ。
input()をsys.stdin.readline()に替えてみたら、改行をうまく削除できずに試行錯誤していたら時間足りず、という感じでした。
最後出したやつ(TLE)
S = input() Q = int(input()) for i in range(1, Q+1): query = input() if len(query) == 1: S = S[::-1] else: n, F, C = query.split() if F == '1': s_list = [C, S] else: s_list = [S, C] S = ''.join(s_list) print(S)
終わってから調べる+解説見ると反転が遅いんですね。。。
問題文の通りに直接シミュレーションするだけでは反転クエリが高速に処理できず、 となり遅いです 2
これなら通りました。
from collections import deque S = list(input()) Q = int(input()) d = deque() d.extend(S) cnt = 0 for i in range(1, Q+1): query = input() if len(query) == 1: cnt += 1 else: n, F, C = query.split() if cnt % 2 == 0: # cntが偶数,F=1で末尾 if F == '1': d.appendleft(C) else: d.append(C) else: # cntが偶数,F=1で先頭 if F == '1': d.append(C) else: d.appendleft(C) if cnt % 2 == 1: # cnt奇数の場合、反転 d.reverse() else: pass l = list(d) S = ''.join(l) print(S)
よかったですね。
EとFはちらっと見ただけです。
(同じ注釈を同じ番号でつけたい場合どうすれば良いんだろうか。そもそもそんな使い方は良くない、のか。。。)