wnsduds1   2년 전

hld알고리즘을 이용해서 단순경로에 있는 값들을  lazy하게 update했습니다!

업데이트 되는 부분에서 최대값만을 갱신하면서 답을 구해보고 있는데 애초에 tle가 나는군요..

https://www.acmicpc.net/proble... 

https://www.acmicpc.net/submit...

농장관리 문제와 비슷하게 로직을 짰습니다. 

하지만 농장관리는 통과가 되었는데  max flow는 통과가 안되네요..

일전에도 top-down방식의 세그먼트를 이용한 hld알고리즘은 tle가 나서 bottom-up방식으로 hld문제를 해결하곤했는데요..

시간복잡도는 O(log(n)^2*m)이라고 생각합니다..

거두절미하고 

1.O(log(n)^2*m)코드가 TLE가 나는 이유가 궁금합니다.!

2. 농장관리 코드와 max flow코드는 동작하는 원리가 거의 동일합니다. 하지만 농장관리는 ac이고 max flow 는 tle인지 궁금합니다.

제가 놓치고 있거나 잘못알고있는 점이 있다면 알려주세요!

slah007   2년 전

가장 큰 문제는 hld가 제대로 이루어지지 않아 어떤 vertex v에 대해 v->root 경로 상에 decomposion의 chain이 O(log n)개만 있음이 보장되지 않습니다. 상수도 숭요하게 생각한다면 range update point query는 lazy segment tree가 필요 없기도 합니다.

또한, 이 문제는 hld에 익숙하다면 그냥 대입하는게 편하긴 하지만 hld 이외의 풀이도 있습니다.

USACO는 test data와 solution을 다 제공하므로 그걸로 디버깅을 하면 편합니다. http://www.usaco.org/index.php...

wnsduds1   2년 전

답변 정말 감사합니다.

 decomposion의 chain이 O(log n)개만 있음이 보장되지 않는 코드일 줄을 전혀몰랐네요..

다시 공부를 해야겠어요 !

정말 감사드립니다.

댓글을 작성하려면 로그인해야 합니다.