====== Optimal Tournament ====== ===== 풀이 ===== * k 제한이 없다고 생각하고 문제를 보자. * S={A1, ..., An} 으로 놓고 DP식을 세우면 아래처럼 될 것이다. * dp[S] = min_S1⊂S {dp[S1] + dp[S-S1] + |max(S1) - max(S-S1)|} * 즉, 전체 지루함 = 전체를 두 그룹으로 나눠서 각 그룹에서 승자를 뽑을때까지 생기는 지루함 + 두 그룹의 최종 승자끼리 붙는 매치의 지루함 이다. 그런데 최종 매치의 지루함은 두 그룹의 최종 승자인 max(S1)과 max(S-S1)에만 관련이 있고, 나머지들은 어떻게 배치되는 상관이 없다. 그리고 각 그룹에서 승자를 뽑을때까지 생기는 지루함을 줄이기 위해서는 그 그룹안에 최강자와 최약자 사이의 갭이 작은 것이 유리하다.이 두가지를 조합하면, S를 S1과 S-S1으로 쪼개면서 max(S1)=X이고 max(S-S1)=max(S)=Y가 되게 한다면, S1에는 X보다 작은 Ai를 모두 넣고, S-S1에는 X보다 큰 Ai를 모두 넣는 것이 가장 좋은 방법이다. * 사실 엄밀하게 증명하려면 조금 더 길어져야 할거 같은데.. 직관적으로 당연해보이니 생략.. * 높이 제한이 없다면. 그냥 제일 약한 선수 둘이 첫 매치를 치루고, 그 승자가 그다음 강한 선수와 다음 매치를 치루고, .. 이런식으로 반복하는 계단식 토너먼트 구성이 가장 최적이라는 것도 알수 있다. * 그러면 이제 A가 정렬되어서 A1BOJ ps:problems:boj:다이아몬드_5}}