From e45849f0ff54c86dc19c47744e351b5b3194cf4d Mon Sep 17 00:00:00 2001 From: tgyuuAn Date: Thu, 21 Nov 2024 02:25:57 +0900 Subject: [PATCH] 2024-11-22 --- tgyuuAn/README.md | 1 + ...0\354\231\200 \354\277\274\353\246\254.py" | 25 +++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 "tgyuuAn/\355\235\254\354\206\214 \353\260\260\354\227\264/\355\225\251\354\204\261\355\225\250\354\210\230\354\231\200 \354\277\274\353\246\254.py" diff --git a/tgyuuAn/README.md b/tgyuuAn/README.md index 1739d15..bd93dd6 100644 --- a/tgyuuAn/README.md +++ b/tgyuuAn/README.md @@ -87,4 +87,5 @@ | 78차시 | 2024.10.06 | 그리디 | 풍선 터뜨리기 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/250 | 79차시 | 2024.10.12 | 이분 매칭 | 책 나눠주기 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/251 | 80차시 | 2024.11.11 | 다익스트라 | 최소비용 구하기 2 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/254 +| 82차시 | 2024.11.22 | 희소 배열 | 합성함수와 쿼리 | https://github.com/AlgoLeadMe/AlgoLeadMe-1/pull/257 --- diff --git "a/tgyuuAn/\355\235\254\354\206\214 \353\260\260\354\227\264/\355\225\251\354\204\261\355\225\250\354\210\230\354\231\200 \354\277\274\353\246\254.py" "b/tgyuuAn/\355\235\254\354\206\214 \353\260\260\354\227\264/\355\225\251\354\204\261\355\225\250\354\210\230\354\231\200 \354\277\274\353\246\254.py" new file mode 100644 index 0000000..b5ae791 --- /dev/null +++ "b/tgyuuAn/\355\235\254\354\206\214 \353\260\260\354\227\264/\355\225\251\354\204\261\355\225\250\354\210\230\354\231\200 \354\277\274\353\246\254.py" @@ -0,0 +1,25 @@ +import sys + +def input(): return sys.stdin.readline().rstrip() + +M = int(input()) +f_x = list(map(int, input().split())) + +# 희소 배열 초기화 +table = [[0] * (M + 1) for _ in range(30)] +table[0] = [0] + f_x # 첫 번째 레벨 초기화 + +# 희소 배열 채우기 +for i in range(1, 30): # 2^i 단계를 계산 + for x in range(1, M + 1): + table[i][x] = table[i - 1][table[i - 1][x]] + +# 쿼리 처리 +Q = int(input()) +for _ in range(Q): + N, X = map(int, input().split()) + # N을 이진수로 표현해 필요한 단계만 수행 + for i in range(30): + if N & (1 << i): # i번째 비트가 1이라면 + X = table[i][X] + print(X)