hirohirohirohirosのブログ

地方国立大学に通う情報系学部4年

Atcoder ABC251 振り返り

AからCまでを8分50秒で解くことで1806位パフォ1103になりました.レートも緑まであと5なので頑張ります.

A - Six Characters【AC】

 与えられる文字列は1から3であり,全て6の約数です.繰り返す回数は6/len(s)で求められます.

s = input()
print(s*(6//len(s)))
B - At Most 3 (Judge ver.)【AC】

 全探索して良い整数を探します.3個以下の重りを選ぶので,1個の場合,2個の場合,3個の場合で場合分けしそれぞれの場合で全探索します.良い整数はダブる可能性がありますが,set型を使う事でダブりを考慮せずカウントすることが出来ます.

N, W = map(int, input().split())
A = [int(i) for i in input().split()]
ans = set()

for i in range(N):
    if A[i] <= W:
        ans.add(A[i])

for i in range(N-1):
    for j in range(i+1, N):
        if A[i] + A[j] <= W:
            ans.add(A[i] + A[j])

for i in range(N-2):
    for j in range(i+1, N-1):
        for z in range(j+1, N):
            if A[i] + A[j] + A[z] <= W:
                ans.add(A[i] + A[j] + A[z])

print(len(ans))
C - Poem Online Judge【AC】

 最高得点を記録するTという変数を用意します.入力される得点tに対し,t>Tならそのポエムは最優秀賞候補になります.しかし,同じポエムが以前に存在していたらそれはオリジナルではないため,最優秀賞にはなり得ません.そのチェックをpoemというset型で行います.
 s in poemで同じポエムが以前に存在しているか確認してます.set型のinは計算量O(1)なので高速です.

N = int(input())
poem = set()
T = 0
ans = 1

for i in range(N):
    s, t = input().split()
    t = int(t)
    if s in poem:
        continue
    if t > T:
        ans = i+1
        T = t

    poem.add(s)
print(ans)