D - 빵집 CodeForces - 834D 트리 라인 최적화 DP ···

D - 빵집

 CodeForces - 834D 

이 항목에서는 열심히 아, 내가 얼마나 잘 이해하지 못했지만, 오랫동안 이해

이 세그먼트 트리 최적화 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 위치를 업데이트 첫 번째 선택합니다.

 

추천

출처www.cnblogs.com/EchoZQN/p/11353079.html