AtCoder Beginner Contest Edit

【pythonでABC202を解説】C - Made Up

問題概要

問題ページ

問題文

\(1\) 以上 \(N\) 以下の整数からなる長さ \(N\) の数列 \(A = (A_1, A_2, \dots, A_N), B = (B_1, B_2, \dots, B_N), C = (C_1, C_2, \dots, C_N)\) が与えられます。

\(1\) 以上 \(N\) 以下の整数 \(i, j\) の組 \((i, j)\) であって、\(A_i = B_{C_j}\) となるものの総数を求めてください。

制約

  • \(1 \leq N \leq 10^5\)
  • \(1 \leq A_i, B_i, C_i \leq N\)
  • 入力は全て整数である。

問題の考察

ACコード

import sys
import collections


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    n = int(input().rstrip('\n'))
    a = list(map(int, input().rstrip('\n').split()))
    b = list(map(int, input().rstrip('\n').split()))
    c = list(map(int, input().rstrip('\n').split()))
    d = collections.defaultdict(int)
    for i in range(n):
        d[b[c[i]-1]] += 1
    cnt = 0
    for i in range(n):
        cnt += d[a[i]]
    print(cnt)


if __name__ == '__main__':
    solve()

プログラミング

-AtCoder Beginner Contest, Edit
-