본문 바로가기
Platinum/Platinum V

BOJ 24545 : Y

by Daisylum 2022. 8. 14.

문제 링크 : https://www.acmicpc.net/problem/24545

 

전형적인 Tree DP 문제이다.

나는 D1, D2,  D 세 가지 다이나믹 배열을 정의하여 해결했다.

 

D1[i] := i 번 노드가 꼭대기인 단일 체인의 최대 길이

D2[i] := i 번 노드가 꼭대기인 Y 트리의 최대 크기 ( V 모양도 포함 )

D[i] := i 번 노드가 루트인 서브트리에서의 Y 트리의 최대 크기

D1[i] (빨간색) 과 D2[i] (파란색)

이제 DP 식만 잘 세워주면 된다.

D1[i] 는 ( 자식들의 D1 들 중 max 값 ) + 1 이다.

D2[i] 는 ( 자식들의 D2 들 중 max 값) + 1 과,  ( 자식들의 D1 들 중 큰 것 2개의 합 ) + 1 중 큰 값이다.

 

그럼 D[i]는 어떻게 하면 될까?

1. 서로 다른 두 자식들의 D1 + D2 들 중 max 값 + 1 ( 위 그림을 보면 쉽게 이해 된다 ) 

2. 자식들의 D2들 중 max 값 + 1

 

1, 2 번 값 중 더 큰 값을 선택하면 된다.

 

최종 정답은 D[1...N] 중 최댓값이다.

'Platinum > Platinum V' 카테고리의 다른 글

BOJ 19544 : 함수 복원  (0) 2022.09.06
BOJ 20131 : 트리 만들기  (0) 2022.09.05
BOJ 5719 : 거의 최단 경로  (0) 2022.08.26
BOJ 3265 : 수열로 수열 구하기  (0) 2022.08.15
BOJ 1306 : 달려라 홍준  (0) 2022.08.14

댓글