아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

영양분 나무

시간 제한2초메모리 제한512 MB

요약
잎이 양분을 생산하고 간선이 w개의 성장제를 쓰면 용량이 (1+w)^2이 되는 이진 트리에서, X개의 성장제를 간선과 잎에 나눠 루트에 도달하는 양분의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
트리, 동적 계획법, DFS, 그리디
정답자
아직 제출이 없습니다

문제

잎이 ll개 (1≤l≤501 \le l \le 50)인 이진 트리가 주어집니다. 각 잎 kk는 영양분 nkn_k (1≤nk≤100001 \le n_k \le 10000)만큼을 생산합니다.

트리의 각 가지(간선이라고 생각하면 됩니다)는 뿌리 쪽으로 흐를 수 있는 영양분의 양을 제한합니다. 당신에게는 성장제 XX개 (1≤X≤25001 \le X \le 2500)가 있으며, 각 성장제는 다음 두 가지 중 하나로 사용할 수 있습니다.

  • 간선 굵히기. 모든 간선의 초기 가중치는 11입니다. 한 간선에 성장제를 ww개 사용하면 그 간선은 최대 (1+w)2(1 + w)^2만큼의 영양분을 운반할 수 있습니다.
  • 잎 강화하기. 초기값이 nkn_k인 잎에 성장제를 ss개 사용하면 그 잎의 생산량은 nk+sn_k + s가 됩니다.

영양분은 잎에서 뿌리 방향으로 흐릅니다. 한 간선을 따라 흐르는 양은 그 간선의 용량과 아래에서 올라온 양 중 더 작은 값입니다. 여러 간선이 내부 노드에서 만나면, 들어온 양들을 모두 더한 뒤 위로 올려 보냅니다.

뿌리에 도달할 수 있는 영양분의 최댓값을 구하세요.

입력

첫째 줄에 트리의 설명이 주어집니다. 설명은 다음과 같이 재귀적으로 정의됩니다.

  • 정수 nkn_k (1≤nk≤100001 \le n_k \le 10000)는 영양분 nkn_k를 생산하는 잎 하나를 나타냅니다.
  • (TL TR)(T_L\ T_R)은 왼쪽 서브트리가 TLT_L, 오른쪽 서브트리가 TRT_R로 설명되는 내부 노드를 나타냅니다. 두 서브트리 설명은 공백으로 구분되어 괄호로 감싸집니다.

둘째 줄에 성장제의 개수인 정수 XX (1≤X≤25001 \le X \le 2500)가 주어집니다.

출력

뿌리에 도달할 수 있는 영양분의 최댓값을 한 줄에 출력하세요.

예제2

  1. 예제 1

    입력
    (5 ((7 1) (3 4)))
    3
    
    예상 출력
    7
    
  2. 예제 2

    입력
    (1 1)
    2
    
    예상 출력
    3