Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Oct 29, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/12926

🧭 풀이 시간

90분

👀 체감 난이도

✏️ 문제 설명

배열 X는 다음과 같이 생성된다.
X[0] = 0, X[i] = (X[i-1] * a + b) % 1,000,000,007

X[0]부터 X[N-1]까지 N개의 정수로 구성된 배열 X에 다음 쿼리를 Q개 처리해보자.

  • i : 배열 X에서 i번째로 작은 수를 출력 (i는 0-based index)

N <= 1,000,000
Q <= 100

🔍 풀이 방법

메모리 제한이 너무 작아서 배열 X를 선언할 수 없다.
f(n) = 배열 X에서 n보다 작은 수의 개수로 두고, 각 쿼리마다 파라메트릭 서치로 바꿔 생각했다.

매 쿼리마다 각각 파라메트릭 서치를 돌리면 O(NQlogMOD)라 시간초과가 나서 f(n)을 구할 때 n이 겹치는 쿼리들에 대해선 한 번만 돌리도록 구현했다.
X를 순회하는 작업을 총 logMOD 번만 하고, 각 순회에서 쿼리들의 mid값을 정렬 후 잘 카운팅해줘서 모든 쿼리의 범위를 한 번에 줄여줬다.

⏳ 회고

이걸 병렬 이분 탐색이라 한다고 함.
결정 문제를 한 번 푸는 과정에서 모든 쿼리에 대해 한 번 씩 해결하는 방법을 찾는 것이 핵심인 듯하다.
이걸 놓쳐서 시간초과가 났다

@oncsr oncsr self-assigned this Oct 29, 2025
@oncsr oncsr added success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 labels Oct 29, 2025
@ShinHeeEul ShinHeeEul merged commit 4e35eb4 into main Oct 29, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants