Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Feb 10, 2025

🧷 문제 링크

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

🧭 풀이 시간

20분

👀 체감 난이도

✏️ 문제 설명

정점 $N$개인 트리가 있고, 각 점 $i$는 값 $P[i]$를 가진다.

각 점 $i$마다, $i$를 루트로 하는 서브트리 내에서 $P[j] > P[i]$$j$의 개수를 구해보자.

🔍 풀이 방법

오일러 경로 테크닉으로 트리를 일자로 편다.

세그먼트 트리와 병합 정렬을 이용해서 일자로 편 트리에 대한 머지 소트 트리를 만든다.

각 점 i의 in, out에 대해, 세그먼트 트리에서 in+1 ~ out 범위에 속하는 노드들 중 P[i]보다 큰 값의 개수를 upper bound로 구해서 더해주면 된다.

⏳ 회고

자바로 구현하니까 upper bound도 직접 짜야하고, 병합하는 merge함수도 없고 여러모로 귀찮은 부분이 많았다.

@ShinHeeEul ShinHeeEul merged commit 17adac5 into main Feb 10, 2025
1 check passed
@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Feb 10, 2025
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