Atcoder ABC252 振り返り
Cでてこずりまくったため,ACはできましたがレートは上げられませんでした…
B - Takahashi's Failure【AC】
max関数を使い食べる食品を見つけます.嫌いな食べ物Bの一つ一つに対して,そのおいしさをしらべ,食べる可能性のある食品だったら(=おいしさが最大の食品だったら)Yesをプリントします.for~elseを使い,一度もbreakしなかったら(=Yesとなるようなパターンがなかったら)Noをプリントします.
N, K = map(int, input().split()) A = [int(i) for i in input().split()] B = [int(i)-1 for i in input().split()] maxA = max(A) for b in B: if A[b] == maxA: print("Yes") break else: print("No")
C - Slot Strategy【AC】
N<100でSは必ず10文字なので,どれだけ遅くてもtは必ず100以下です.つまり,tでシミュレーションしても十分間に合うということです.(これに気付くまでにだいぶ時間がかかってしまった…)
t=1秒の時に0,1,2,...で揃うパターンはないか調べます.なかった場合t+=1としてwhile文を繰り返します.
for i, s in enumerate(S)で,i番目のリールsを取り出します.t秒目のリールsに表示されている値は問題文にもある通りs[t%10]です.この値をdicに追加し,dicにある値の個数がリールの数と等しくなったらすべて揃ったということなので,処理を抜けてtを表示します.
N = int(input()) S = [input() for _ in range(N)] ans = 1<<60 t = 0 dic = {i:set() for i in range(10)} ok = True while ok: now = set() for i, s in enumerate(S): num = int(s[t%10]) if i in dic[num]: continue if num in now: continue now.add(num) dic[num].add(i) if len(dic[num]) == N: ok = False break t += 1 print(t-1)