10089번: Profit
Olympiland에는 1부터 N까지의 번호가 붙은 N개의 마을이 있습니다. 그들 중 일부는 서로 직접 연결되어있고, 전체 도로망은 한 도시에서 다른 도시로 가는 경로가 유일하도록 짜여져 있습니다. 거
www.acmicpc.net
문제 내용을 간단하게 요약하면 트리가 있고 우리는 그 위에 하나의 경로를 잡을 것이다. 그런데 트리에는 M개의 경로가 있는데, 각각의 경로를 포함하게 되면 그 경로에 해당하는 주어진 수익을 얻을 수 있다. 이때 얻는 수익을 최대화하면 된다.
정한 경로의 양끝점을 p1,p2라고 하자. p1에서 p2로 이어지는 경로가 어떤 경로를 포함하려면, p1이 그 경로의 한쪽 끝점에서 만들어지는 서브트리에 포함되고, p2가 그 경로의 또다른쪽 끝점에서 만들어지는 서브트리에 포함된다. 그런데 루트를 잡고 dfs ordering을 한다면 모든 서브트리는 한 개 또는 두 개의 구간(루트를 포함하는 서브트리일 때)으로 나타낼 수 있다. p2의 dfs order가 p1의 dfs order보다 크다고 일단 고정하자. 그러면 모든 경로들은 한 개 또는 두 개의 'p1의 dfs order가 l1~r1 사이에 있고 p2의 dfs order가 l2~r2 사이에 있을 때 wi의 이득을 얻는다.'라는 표현으로 나타낼 수 있다. 이렇게 나타내면 p1의 dfs order가 커지는 순서로 스위핑하면서 레이지 최댓값 세그를 이용하면 문제를 풀 수 있다.
'PS' 카테고리의 다른 글
2021 국가대표 멘토링 교육 - 2주차 (0) | 2021.04.12 |
---|---|
2021 국가대표 멘토링 교육 - 1주차 (3) | 2021.04.06 |
IOI 2012 tournament (3) | 2021.03.03 |
우체국 4 풀이 (1) | 2020.12.14 |
KOI 2020 본선 후기 (2) | 2020.12.05 |