projung0722   2년 전

free()부분에서 에러가 나는 것같은데 해결을 못하겠습니다. 동적할당한 크기를 벗어나는가를 확인했는데 아닌거같고 넉넉히 더 크게 동적할당하니 메모리초과가 나옵니다. ㅠㅠ 도와주세요!!ㅠㅠ

zenith82114   2년 전

세그트리 길이를 2n으로 주면 모자라는 경우가 있습니다.

일례로 n=6일 때 1번 노드가 구간 [0:5]를 담당할 경우 구간 [4:4]에 해당하는 노드는 13번입니다.

projung0722   2년 전

말씀해주신거 듣고 찾아보고 고쳤는데, 메모리초과가 납니다. 이게 구조체를 사용해서 그럴까요?

zenith82114   2년 전

이 문제에서는 최대 넓이만 구하면 되고, 그게 어디인지는 몰라도 됩니다.

index를 저장할 필요가 있을까요?

projung0722   2년 전

분할해줄때 필요하다고 생각하고 코드를 작성해주었습니다. 인덱스를 모르면 어디서 어떻게 분할할 지 모르지 않나요?

projung0722   2년 전

최솟값을 가져오도록 하지않고 최솟값의 인덱스만 가져오도록 했는데도 메모리초과가 납니다ㅠ

zenith82114   2년 전

테스트 케이스를 랜덤으로 만들어서

제가 짰던 코드와 같이 돌려 보니 답이 계속 똑같이 나오네요.

게다가 제 코드는 segment tree 말고 sparse table을 썼기 때문에

메모리 사용량은 오히려 저보다 적어야 합니다.

이러면 제 생각에 남은 가능성은 동적 할당 overhead밖에 없어 보입니다.

동적 할당 대신 필요한 최대 크기만큼 한번만 선언하고 테스트 케이스마다 초기화하는 방식으로 고쳐 보세요.

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