D - 빵집
이 항목에서는 열심히 아, 내가 얼마나 잘 이해하지 못했지만, 오랫동안 이해
이 세그먼트 트리 최적화 DP는 느낌은 여전히 매우 어렵다.
그것의 생각, 그는 코드를 볼 수 있다는 것을 직접.
전송 방정식의 주제는 잘 작성된 것입니다
DP [I] [J]를 가리 j 번째 자리에 케이크의 i 번째의 최대치.
DP [I] [J] = 최대 (DP [K] [J-1] + 브로 [K + 1 ~ I]
이 확실히 직접 폭력을 추구하지 않는 것은 분명하다, 나무의 라인 최적화를 사용하는 것이 필요하다.
어떻게, 세그먼트 트리에게 그것을 최적화
이 문제에보고 당신이 종 수의 수의 모든 섹션의 오른쪽 끝 지점을 물어이 시점에서, 당신에게 X 점을주고,
이것은 당신이 X X + 1 점 방법이 변화에서 물어 계속, 그렇지 않은 매우 간단합니다?
마지막으로 [A [X를 발견되지 +이 위치에이 위치 X + 1 +1 행이도 1]의 발생의 [X + 1]의 위치, 모든 섹션은 +1이다
이 세그먼트 트리 각 세그먼트 트리의 위치 I의 우리 열거로서없고, 갱신되어 있지 않으며, 각각의 리프 노드 (L)가 == R == K가 아니다 브로 [K ~ I]
나는 이것을 알고, 다시 이전의 질문에, 우리가 발을 물어 [K + 1 ~ I] + DP [K] [J-1]의 최대 값의
따라서 DP [K] [J-1]이 때, 영향을 마지막 때 추구되었으며, 고정 된 값이다.
우리는 단지 발 항 [K + 1 ~ J]
그것은 세그먼트 트리 내측이 두 가지를 넣을 수 있고, 그것은 L 개의 == 연구는 ==이 위치 이것은 다시 왕 Qianmian 발 또는 DP [K]에 대해 이동할 필요가 K + 1 위치 케이 에 대해 이동합니다.
그때, 업데이트 할 수있는 시간이 지난 [A [X + 1]]로 x 위치를 업데이트 첫 번째 선택합니다.