Xenous の精進記録

AtCoder関連他、学習したことの記録です。

ABC210 参加記録

  • 3完0ペナ 10分でした

A - Cabbages

 A 個までは  X 円、それ以降は  Y 円です。  N > A のときは  AX + (N-A)Y 円とかけます。そうでない時は単純に  AX 円です。

N, A, X, Y = map(int, input().split())
if N <= A:
    print(X*N)
else:
    print(X*A + Y*(N-A))

B - Bouzu Mekuri

実際に順に手札を取っていくシミュレーションをして確かめます。後で考えてみると、初めて 1 が出てくる場所がわかればいいので、入力をリストで受け取って S.index('1') でも求められそうです。

N = int(input())
S = input()
k = 0
for s in S:
    if s == '0':
        k += 1
    else:
        break
if k%2 == 0: print('Takahashi')
else: print('Aoki')

C - Colorful Candies

先にベースとなる  K 個のカウンターを持っておき、そこからウィンドウを動かすように、先頭を追加、末尾を削除、を繰り返してその都度種類数を確認します。

from collections import Counter

N, K = map(int, input().split())
C = list(map(int, input().split()))
CounterC = Counter(C[:K])
ans = len(CounterC.keys()); tmp = ans
for i in range(N-K):
    if CounterC[C[K+i]] == 0: tmp += 1
    CounterC[C[K+i]] += 1
    CounterC[C[i]] -= 1
    if CounterC[C[i]] == 0: tmp -= 1
    ans = max(ans, tmp)
print(ans)

D - National Railway

探索の仕方が難しいです。後日解きます。

E - Ring MST

こちらはある程度考察しましたが、WA が取れず。後日解きます。