문제 링크
- http://icpc.me/16191
사용 알고리즘
- Alien’s Trick
- Tree DP
시간복잡도
- $O(N \log X)$
풀이
트리에서 매칭 K개를 골랐을 때 가중치 합의 최댓값을 구하는 문제입니다.
N = 100일 때의 풀이를 먼저 생각해봅시다.
네, 맞습니다. 이분 그래프에서 매칭 K개의 최소/최대 비용은 MCMF로 구할 수 있습니다. 그래프 모델링하고 플로우를 K만큼 흘려주면 됩니다.
이제 N = 100,000일 때의 풀이를 생각해봅시다.
MCMF로 답을 구할 수 있다는 것은, 답이 K에 대해 볼록하다는 것을 의미합니다. 다시 말해, K = t일 때의 정답을 f(t)라고 하면 (K, f(K)) 점들을 찍었을 때 위로 볼록한 형태의 그래프가 나옵니다.
Alien’s Trick을 이용해 쉽게 답을 구할 수 있습니다.
Challenge
트리에서 매칭을 1개, 2개, … , N-1개 골랐을 때 가중치 합의 최댓값을 모두 구하는 건 어떻게 해결할 수 있을까요?(문제)
Utilitarianism 풀이를 N번 수행하면 $O(N^2 \log X)$에 해결할 수 있습니다. 이것보다 빠르게 풀 수 있을까요?
전체 코드
1 |
|