Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Sep 19, 2025

🧷 문제 링크

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

🧭 풀이 시간

150분

👀 체감 난이도

✏️ 문제 설명

길이 N인 수열에 아래 쿼리를 Q번 처리해보자.
image

🔍 풀이 방법

  • 제곱근 분할법
  • 세그먼트 트리

1번 쿼리를 처리할 때 두 가지 경우로 나눈다.
$X$$\sqrt{100000}$보다 클 때는 (전체 합) - ([(k-1)X,kX)에 존재하는 A[i]의 개수) * (k-1)X 를 직접 구해도 $O(\sqrt{100000})$에 처리할 수 있다.
$X$$\sqrt{N}$ 이하일 때는 미리 전처리로 배열에 해당 값이 X일 때의 정답을 계산해둔다.
전처리 비용은 $O(N\sqrt{100000})$이고, 값이 바뀔 때 이것도 같이 갱신해주면 $O(\sqrt{100000})$이 된다.
개수를 구할 때 세그먼트 트리가 필요해서 log 시간이 추가로 붙는다.

2,3번 쿼리도 위와 마찬가지로 쿼리당 $O(\sqrt{100000} \times \log{100000})$에 처리할 수 있다.

⏳ 회고

$O(N\sqrt{100000}\log{100000})$이 많이 빡센가보다.
상수를 열심히 깎았는데도 안 뚫린다.
내일 세그먼트 트리 대신 펜윅 트리를 적용해서 다시 해봐야겠다

@oncsr oncsr added the fail 😢 해설을 보고 풀었거나, 못 풀었을 때 label Sep 19, 2025
@ShinHeeEul ShinHeeEul merged commit be05213 into main Sep 19, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fail 😢 해설을 보고 풀었거나, 못 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants