hirohirohirohirosのブログ

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

Atcoder ABC262 振り返り

A - World Cup【AC】

 条件を満たすまで+1し続けます.4で割った余りが2が条件なので最大でも3ループで終わることが分かります.

Y = int(input())
while Y%4 != 2:
    Y += 1
print(Y)
B - Triangle (Easier)【AC】

 隣接リストを作ります.辺が存在するかはinで確認します.N<100なのでinでも十分間に合います.

N, M = map(int, input().split())
node = {i+1:[] for i in range(N)}
for _ in range(M):
    u, v = map(int, input().split())
    node[u].append(v)
    node[v].append(u)

ans = 0
for a in range(1, N-1):
    for b in range(a, N):
        for c in range(b, N+1):
            if a in node[b] and b in node[c] and c in node[a]:
                ans += 1
print(ans)
C - Min Max Pair【AC】

 i==A[i]の時とそうでないときで処理が変わります.i==A[i]であるようなiの集合は,どの2つを持ってきてもminとmaxの条件を満たします.i

N = int(input())
A = [int(i)-1 for i in input().split()]
cou = 0
ans = 0
for i in range(N):
    if i == A[i]:
        cou += 1
    else:
        if i == A[A[i]] and i < A[i]:
            ans += 1
print(ans+(cou*(cou-1))//2)