세그트리 길이를 2n으로 주면 모자라는 경우가 있습니다.
일례로 n=6일 때 1번 노드가 구간 [0:5]를 담당할 경우 구간 [4:4]에 해당하는 노드는 13번입니다.
6549번 - 히스토그램에서 가장 큰 직사각형
세그트리 길이를 2n으로 주면 모자라는 경우가 있습니다.
일례로 n=6일 때 1번 노드가 구간 [0:5]를 담당할 경우 구간 [4:4]에 해당하는 노드는 13번입니다.
말씀해주신거 듣고 찾아보고 고쳤는데, 메모리초과가 납니다. 이게 구조체를 사용해서 그럴까요?
이 문제에서는 최대 넓이만 구하면 되고, 그게 어디인지는 몰라도 됩니다.
index를 저장할 필요가 있을까요?
분할해줄때 필요하다고 생각하고 코드를 작성해주었습니다. 인덱스를 모르면 어디서 어떻게 분할할 지 모르지 않나요?
최솟값을 가져오도록 하지않고 최솟값의 인덱스만 가져오도록 했는데도 메모리초과가 납니다ㅠ
테스트 케이스를 랜덤으로 만들어서
제가 짰던 코드와 같이 돌려 보니 답이 계속 똑같이 나오네요.
게다가 제 코드는 segment tree 말고 sparse table을 썼기 때문에
메모리 사용량은 오히려 저보다 적어야 합니다.
이러면 제 생각에 남은 가능성은 동적 할당 overhead밖에 없어 보입니다.
동적 할당 대신 필요한 최대 크기만큼 한번만 선언하고 테스트 케이스마다 초기화하는 방식으로 고쳐 보세요.
댓글을 작성하려면 로그인해야 합니다.
projung0722 2년 전
free()부분에서 에러가 나는 것같은데 해결을 못하겠습니다. 동적할당한 크기를 벗어나는가를 확인했는데 아닌거같고 넉넉히 더 크게 동적할당하니 메모리초과가 나옵니다. ㅠㅠ 도와주세요!!ㅠㅠ