Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Sep 28, 2025

🧷 문제 링크

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

🧭 풀이 시간

40분

👀 체감 난이도

✏️ 문제 설명

길이 N인 수열에 아래 두 종류의 쿼리를 처리해보자.

  • 1 S E : S번째 수부터 E번째 수를 모두 각 수의 약수의 개수로 바꾼다.
  • 2 S E : S번째 수부터 E번째 수까지의 합을 출력한다.

🔍 풀이 방법

  • 에라토스테네스의 체
  • 세그먼트 트리

어떤 수 N의 약수의 개수는 O(logN)임.
그래서 N을 수렴시키는데 필요한 갱신 횟수가 매우 낮음.

f(x) = x의 약수의 개수
g(x) = x의 남은 갱신 횟수

  1. 선형 체로 소인수분해 -> 모든 f(x), g(x)값 구해놓기
  2. g(x)의 max와 f(x)의 합을 관리하는 세그먼트 트리 만들기
  3. 1번 쿼리의 구간에서 g가 0이 아닌 구간으로만 들어가고, 거기선 직접 갱신

⏳ 회고

자바 추가 시간이 없어서 시간 제한이 좀 빡빡한 듯

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Sep 28, 2025
@ShinHeeEul ShinHeeEul merged commit 030aef1 into main Sep 28, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants