문제 요약
크기가 $n$인 트리 $T$가 주어진다. 모든 노드가 "부모 노드의 번호가 자신보다 작다"는 성질을 만족한다. 이제 $n+m$개의 노드를 가진 트리 $T^{\prime}$이 몇 개나 있는지를 구하려 한다. 이때 $T^{\prime}$은 다음 두 가지 조건을 만족해야 한다.
- 임의의 $1 \leq i, j \leq n$에 대해, $LCA(i, j)$는 $T$와 $T^{\prime}$에서 동일하다.
- 임의의 $1 \leq i, j \leq n+m$에 대해, $T^{\prime}$에서 $LCA(i, j) \leq max(i, j) + k$이다.
풀이
$T^{\prime}$에서 ${1, 2, 3 \dots n}$의 위치관계는 기존 $T$와 같아야 함을 알 수 있다. 즉, 기존 $T$에서 사이사이에 적당히 노드를 끼워넣은 형태여야 한다.
트리 $T^{\prime}$에서 노드를 하나씩 제거하여 $T$에 도달하는 과정을 생각하자.
일단 알아둬야 할 것은, 기존 $T$의 간선 정보는 1도 필요하지 않다. 받자마자 버려도 된다.
$k = 0$인 경우
제일 수가 큰 노드부터 제거한다고 생각해보자. 이 노드의 자식은 "최대 하나"여야 한다. 2개 이상 있으면 조건 2에 모순이기 때문이다. 제거할 때 일종의 축약, 즉 자식이 있는 경우 자신을 삭제하고 부모와 자식을 이어준다고 생각하자. 반대로 $N+1$번 노드부터 $N+M$번 노드까지 차례대로 추가한다고 생각하면, $i$번 노드를 추가하는 형태는
- 기존에 있던 간선 사이에 내가 낌. $i-2$가지.
- 어떤 노드의 자식으로 새로 들어감. $i-1$가지.
위 2가지가 있음을 알 수 있다. 그러므로 답은
$\prod_{i=n+1}^{n+m}(2i - 3)$
이 된다.
$k > 0$인 경우
조건 2에 의해, $u$의 서브트리 중에서 $u-k$미만의 정점을 포함하는 서브트리는 오직 하나뿐이다.
그 외의 자식들이 존재한다면, 그 자식들은 모두 $번호 \geq u-k$인 정점만 갖고 있을 것이다. 이런 자식들을 특별한 자식이라고 하자. 좀 더 엄밀히 말하자면, 특별한 자식이란 "메인 서브트리"를 제외하고를 얘기한다. $u$의 자식 서브트리들이 모두 $번호 \geq u-k$라고 해서 모든 자식이 특별한 자식인 것은 아니다. 제거 과정에서 제일 마지막까지 남는 서브트리가 메인 서브트리이고, 다른 서브트리들이 모두 특별한 자식이다.
어떤 정점 $u$가 특별한 자식이 있는 경우, 일단 $u$의 삭제를 보류하자. 그 이후 $u$를 제외한 정점들 중 큰 정점부터 같은 과정대로 삭제(축약)하다가, 마지막 특별한 자식을 삭제하게 될 것이다. 이 정점을 삭제할 때, 비로소 $u$는 "특별한 자식"이 없게 되므로 $u$를 삭제할 수 있다. 얘내 둘을 묶어서, "동시에 삭제"하는 것으로 생각할 수 있다. 그 정점을 $v$라고 할 때, $u$와 $v$는 매칭되었다고 생각하자.
간단한 관찰로, 각 정점은 최대 한 개의 매칭에 속할 수 있음을 알 수 있다.
다음은 간단한 예시이다.
$n = 3, m = 4, k = 3$인 경우



반대로 $n+1$부터 $n+m$까지 차례대로 삽입하면서, 같이 묶일 수 있는 후보군을 관리하는 bit DP를 짜면 된다.
DP상태를
$DP[i][S] = (n+i$번 노드를 막 추가하려는 단계에서, $[n+i, n+i+k-1]$구간 중 이미 쓴 정점들의 집합 $S)$
로 정의하자. 전이는
- 이미 $n+i$가 $S$에 있다면, 넘어간다.
 $DP[i+1][S \setminus {n+i}] += DP[i][S]$
- 그렇지 않으면, 다음과 같은 2가지로 나뉜다.
- 일반 삽입:
 $DP[i+1][S] += DP[i][S] \times [2(n + i - 1 + |S|) - 1]$
- 묶어서 삽입: $\exists v\in ([n+i-1,n+i+k]\setminus S)$
 $DP[i+1][S\cup{v}] += DP[i][S] \times (n + i - 1 + |S| - 1)$
결과적으로 최종 답은 $DP[m+1][\varnothing ]$이다. 시간복잡도는
$O(m\times k \times 2^k)$
가 된다.
후기
중국 기출은 좀 더럽거나 문제가 있을 줄 알았는데, 그 편견을 없애준 문제이다. 의외로 흠 너무 어려운데. 일단 적당히 티어를 매겼지만 솔직히 잘 모르겠다. 카운팅 너무 힘들다.
'PS' 카테고리의 다른 글
| 백준 34344 공연 준비 풀이 (4) | 2025.09.14 | 
|---|---|
| OI별 인상 (7) | 2025.06.07 | 
| 좇깡양공부법으로 IOI만점 쟁취하자 (2) | 2025.05.14 | 
| 그리디를 여행하는 PS러를 위한 안내서 (2) | 2025.04.15 | 
| 볼록성 in PS (4) | 2025.03.16 |